From 11273c931b9c8fbac12b894a2c21dd49dfc42266 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 22 Jul 2022 13:21:53 -0700 Subject: [PATCH 01/81] Testing XML layer differences --- ...aneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 1888 +++++++++++------ 1 file changed, 1253 insertions(+), 635 deletions(-) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index 986d71ac..4af93c87 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -12,11 +12,6 @@ using namespace FenestrationCommon; using namespace SpectralAveraging; using namespace MultiLayerOptics; -// Example on how to create multilayer BSDF from specular layers only - -#include - - class MultiPaneBSDF_102_BSDFMaterial_2011_SA1 : public testing::Test { private: @@ -122,637 +117,1260 @@ class MultiPaneBSDF_102_BSDFMaterial_2011_SA1 : public testing::Test // clang-format off - static std::vector> loadTfSolar() - { - return{ - {2.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 2.009060, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 2.009060, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 2.009060, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 2.009060, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 2.009060, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 2.009060, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 2.009060, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 2.009060, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 2.028739, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.734550, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.591887, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.610392, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 1.516913, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.797010, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.338213, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.338213, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.338213, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.338213, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.338213, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.338213, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.338213, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.338213, 0.022243, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.338213, 0.022243, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.338213, 0.022243, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.338213, 0.022243}, - {0.022252, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023628, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023737, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.023844, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.022243, 0.338213} - }; - } +std::vector> TransmittanceFrontSolar(){ +return { + {2.03376,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,2.00906,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,2.00906,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,2.00906,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,2.00906,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,2.00906,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,2.00906,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,2.00906,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,2.00906,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,2.028739,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.73455,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.591887,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.610392,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,1.516913,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.79701,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.338213,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.338213,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.338213,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213}, + }; +} - static std::vector> loadTbSolar() - { - return{ - {2.033760, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 2.009060, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 2.009060, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 2.009060, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 2.009060, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 2.009060, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 2.009060, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 2.009060, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 2.009060, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 2.028739, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.734550, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.591887, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.610392, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 1.516913, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.797010, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.338213, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.338213, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.338213, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.338213, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.338213, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.338213, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.338213, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.338213, 0.003868, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.338213, 0.003868, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.338213, 0.003868, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.338213, 0.003868}, - {0.021750, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.021508, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.020777, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.019569, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.017820, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.015528, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.012645, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.009169, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.003868, 0.338213} - }; - } - static std::vector> loadRfSolar() - { - return { - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368}, - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.164737, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.172379, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.181949, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368, 0.198368} - }; - } +std::vector> TransmittanceBackSolar(){ +return { + {2.03376,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,2.00906,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,2.00906,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,2.00906,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,2.00906,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,2.00906,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,2.00906,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,2.00906,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,2.00906,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,2.028739,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.73455,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.591887,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.610392,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,1.516913,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.79701,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.338213,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.338213,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.338213,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213}, + }; +} + + +std::vector> ReflectanceFrontSolar(){ +return { + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + }; +} + + +std::vector> ReflectanceBackSolar(){ +return { + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + }; +} + + +std::vector> TransmittanceFrontVisible(){ +return { + {2.063833,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,2.027935,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,2.027935,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,2.027935,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,2.027935,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,2.027935,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,2.027935,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,2.027935,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,2.027935,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,2.047657,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.746329,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.608228,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.620896,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,1.526892,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.801676,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.335522,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.335522,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.335522,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522}, + }; +} + + +std::vector> TransmittanceBackVisible(){ +return { + {2.063833,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,2.027935,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,2.027935,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,2.027935,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,2.027935,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,2.027935,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,2.027935,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,2.027935,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,2.027935,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,2.047657,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.746329,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.608228,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.620896,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,1.526892,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.801676,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.335522,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.335522,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.335522,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522}, + }; +} + + +std::vector> ReflectanceFrontVisible(){ +return { + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + }; +} + + +std::vector> ReflectanceBackVisible(){ +return { + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + }; +} - static std::vector> loadRbSolar() - { - return { - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664}, - {0.167364, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.167990, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.169873, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.173027, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.177485, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.183315, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.190665, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.199871, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664, 0.215664} - }; - } // clang-format on protected: virtual void SetUp() { + const auto numberOfVisibleBands{5u}; + const auto numberOfIRBands{10u}; + auto condensedSpectrum{ + FenestrationCommon::generateSpectrum(numberOfVisibleBands, numberOfIRBands)}; + // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); - auto tfSolar = loadTfSolar(); - auto tbSolar = loadTbSolar(); - auto rfSolar = loadRfSolar(); - auto rbSolar = loadRbSolar(); - const auto aBSDFMaterial = Material::singleBandBSDFMaterial( - tfSolar, tbSolar, rfSolar, rbSolar, aBSDF, WavelengthRange::Solar); - auto Layer_Glass = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); - auto Layer_BSDF = CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); + //aMaterial_102->setBandWavelengths(condensedSpectrum); - const auto numberOfVisibleBands{5u}; - const auto numberOfIRBands{10u}; - auto condensedSpectrum{ - FenestrationCommon::generateSpectrum(numberOfVisibleBands, numberOfIRBands)}; + const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + //auto tfSolar = TransmittanceFrontSolar(); + //auto tbSolar = TransmittanceBackSolar(); + //auto rfSolar = ReflectanceFrontSolar(); + //auto rbSolar = ReflectanceBackSolar(); + //auto tfVisible = TransmittanceFrontVisible(); + //auto tbVisible = TransmittanceBackVisible(); + //auto rfVisible = ReflectanceFrontVisible(); + //auto rbVisible = ReflectanceBackVisible(); + // + //auto nirRatio{0.49}; + //const auto aBSDFMaterial = Material::dualBandBSDFMaterial(tfSolar, + // tbSolar, + // rfSolar, + // rbSolar, + // tfVisible, + // tbVisible, + // rfVisible, + // rbVisible, + // aBSDF, + // nirRatio); + + //aBSDFMaterial->setBandWavelengths(condensedSpectrum); - m_Layer = CMultiPaneBSDF::create( - {Layer_Glass, Layer_BSDF}, loadSolarRadiationFile(), condensedSpectrum); + auto Layer_Glass = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); + Layer_Glass->setBandWavelengths(condensedSpectrum); + //auto Layer_BSDF = CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); + + m_Layer = CMultiPaneBSDF::create({Layer_Glass}, loadSolarRadiationFile()); } public: @@ -776,20 +1394,20 @@ TEST_F(MultiPaneBSDF_102_BSDFMaterial_2011_SA1, TestBSDFMatrixAsInput) double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.105543, tauHem, 1e-6); - - double rhoFrontHem = - aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.402695, rhoFrontHem, 1e-6); - - double rhoBackHem = - aLayer.DirHem(minLambda, maxLambda, Side::Back, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.527301, rhoBackHem, 1e-6); - - double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.118130, abs1, 1e-6); + EXPECT_NEAR(0.8442013960790028, tauHem, 1e-6); - auto absHeat1 = aLayer.getAbsorptanceLayersHeat( - minLambda, maxLambda, Side::Front, ScatteringSimple::Diffuse, 0, 0); - EXPECT_NEAR(0.126859, absHeat1[0], 1e-6); + //double rhoFrontHem = + // aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + //EXPECT_NEAR(0.40537985378849184, rhoFrontHem, 1e-6); + // + //double rhoBackHem = + // aLayer.DirHem(minLambda, maxLambda, Side::Back, PropertySimple::R, theta, phi); + //EXPECT_NEAR(0.52845227432122244, rhoBackHem, 1e-6); + // + //double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); + //EXPECT_NEAR(0.11614336750923809, abs1, 1e-6); + // + //auto absHeat1 = aLayer.getAbsorptanceLayersHeat( + // minLambda, maxLambda, Side::Front, ScatteringSimple::Diffuse, 0, 0); + //EXPECT_NEAR(0.12486670301018926, absHeat1[0], 1e-6); } From e98924ced6795d43f09fba306e54a26f5078769d Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 22 Jul 2022 14:41:37 -0700 Subject: [PATCH 02/81] Fixed bug where wavelenght assignment to material or MultiPaneBSDF were causing different results. --- src/Common/src/SquareMatrix.hpp | 2 ++ .../src/EquivalentBSDFLayer.cpp | 19 ++++++---------- .../src/EquivalentBSDFLayer.hpp | 7 +++--- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 6 ++--- ...aneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 2 +- ...aneBSDF_102_PerfectDiffuseVisible.unit.cpp | 22 +++++++++---------- 6 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/Common/src/SquareMatrix.hpp b/src/Common/src/SquareMatrix.hpp index aeea3919..ae0be280 100644 --- a/src/Common/src/SquareMatrix.hpp +++ b/src/Common/src/SquareMatrix.hpp @@ -13,6 +13,8 @@ namespace FenestrationCommon explicit SquareMatrix(const std::vector> & tInput); explicit SquareMatrix(const std::vector> && tInput); + SquareMatrix & operator=(const SquareMatrix & val) = default; + std::size_t size() const; void setZeros(); void setIdentity(); diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index f3a8eec9..3ebe3c17 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -5,7 +5,6 @@ #include "EquivalentBSDFLayer.hpp" #include "EquivalentBSDFLayerSingleBand.hpp" -#include "WCESingleLayerOptics.hpp" #include "WCECommon.hpp" using namespace FenestrationCommon; @@ -13,22 +12,18 @@ using namespace SingleLayerOptics; namespace MultiLayerOptics { - CEquivalentBSDFLayer::CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths, - const std::shared_ptr & t_Layer) : - m_Lambda(t_Layer->getResults()->lambdaMatrix()), + CEquivalentBSDFLayer::CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths) : m_CombinedLayerWavelengths(t_CommonWavelengths), m_Calculated(false) - { - if(t_Layer == nullptr) - { - throw std::runtime_error("Equivalent BSDF Layer must contain valid layer."); - } - - addLayer(t_Layer); - } + {} void CEquivalentBSDFLayer::addLayer(const std::shared_ptr & t_Layer) { + t_Layer->setBandWavelengths(m_CombinedLayerWavelengths); + if(m_Layer.empty()) + { + m_Lambda = t_Layer->getResults()->lambdaMatrix(); + } updateWavelengthLayers(*t_Layer); m_Layer.push_back(t_Layer); } diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index 32977258..9c797db8 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -6,6 +6,7 @@ #include #include +#include //#include "AbsorptancesMultiPaneBSDF.hpp" @@ -21,7 +22,6 @@ namespace FenestrationCommon namespace SingleLayerOptics { - class CBSDFLayer; class CBSDFIntegrator; enum class BSDFDirection; class CBSDFDirections; @@ -36,8 +36,7 @@ namespace MultiLayerOptics class CEquivalentBSDFLayer { public: - CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths, - const std::shared_ptr & t_Layer); + CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths); void addLayer(const std::shared_ptr & t_Layer); const SingleLayerOptics::CBSDFDirections & @@ -93,7 +92,7 @@ namespace MultiLayerOptics std::shared_ptr> m_Tot; - const FenestrationCommon::SquareMatrix m_Lambda; + FenestrationCommon::SquareMatrix m_Lambda; std::vector m_CombinedLayerWavelengths; bool m_Calculated; diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index 9dd5cecc..af0cc541 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -25,7 +25,7 @@ namespace MultiLayerOptics const FenestrationCommon::CSeries & t_SolarRadiation, const FenestrationCommon::CSeries & t_DetectorData, const std::vector & t_CommonWavelengths) : - m_Layer(t_CommonWavelengths, t_Layer[0]), + m_Layer(t_CommonWavelengths), m_Results( std::make_shared(t_Layer[0]->getDirections(BSDFDirection::Incoming))), m_Calculated(false), @@ -41,7 +41,7 @@ namespace MultiLayerOptics const std::vector> & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation, const std::vector & t_CommonWavelengths) : - m_Layer(t_CommonWavelengths, t_Layer[0]), + m_Layer(t_CommonWavelengths), m_Results( std::make_shared(t_Layer[0]->getDirections(BSDFDirection::Incoming))), m_Calculated(false), @@ -86,7 +86,7 @@ namespace MultiLayerOptics } // First layer has already been added. Must skip it here - for(size_t j = 1u; j < t_Layer.size(); ++j) + for(size_t j = 0u; j < t_Layer.size(); ++j) { this->addLayer(t_Layer[j]); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index 4af93c87..361fad70 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -1342,7 +1342,7 @@ return { //aMaterial_102->setBandWavelengths(condensedSpectrum); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); //auto tfSolar = TransmittanceFrontSolar(); //auto tbSolar = TransmittanceBackSolar(); //auto rfSolar = ReflectanceFrontSolar(); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp index bdd8396a..05a75943 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp @@ -281,39 +281,39 @@ TEST_F(MultiPaneBSDF_102_PerfectDiffuse_Visible, TestPerfectDiffuseBSDFVisible) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.33674322275626606, tauDiff, 1e-6); + EXPECT_NEAR(0.3365838056368104, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.30295859828011501, rhoDiff, 1e-6); + EXPECT_NEAR(0.30272005881985259, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.023554956207358275, absDiff1, 1e-6); + EXPECT_NEAR(0.024112329906520978, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.33674322275626389, absDiff2, 1e-6); + EXPECT_NEAR(0.33658380563681356, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.37219116519590029, tauHem, 1e-6); + EXPECT_NEAR(0.37204158261216119, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.0091081661144266721, tauDir, 1e-6); + EXPECT_NEAR(0.0091045055680517902, tauDir, 1e-6); double tauDirDiff = aLayer.DirDiff(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.36308299908147362, tauDirDiff, 1e-6); + EXPECT_NEAR(0.36293707704410938, tauDirDiff, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.23412372228100389, rhoHem, 1e-6); + EXPECT_NEAR(0.23391286196150513, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.086742861860463094, rhoDir, 1e-6); + EXPECT_NEAR(0.086657097881533585, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.021493947327196235, abs1, 1e-6); + EXPECT_NEAR(0.022003972814172566, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.37219116519590056, abs2, 1e-6); + EXPECT_NEAR(0.37204158261216141, abs2, 1e-6); } From 5e8fe34e6fba7384439f9a02704ee73f329f9b95 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 22 Jul 2022 14:58:13 -0700 Subject: [PATCH 03/81] Cleanup of unit tests --- src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp | 1 - .../tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp index 2eae084c..2dfb32aa 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp @@ -120,7 +120,6 @@ class MultiPaneBSDF_102 : public testing::Test protected: virtual void SetUp() { - CSeries test({{1, 2}, {3, 4}}); // Create material from samples double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index 361fad70..1ea550e6 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -1342,7 +1342,7 @@ return { //aMaterial_102->setBandWavelengths(condensedSpectrum); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); //auto tfSolar = TransmittanceFrontSolar(); //auto tbSolar = TransmittanceBackSolar(); //auto rfSolar = ReflectanceFrontSolar(); From 1c2a64f1f4d28b625b2a2d4eeb97e0dd31bae7d3 Mon Sep 17 00:00:00 2001 From: vidanovic Date: Fri, 22 Jul 2022 17:12:49 -0700 Subject: [PATCH 04/81] NIRRatio moved to constants --- src/Common/src/Constants.hpp | 3 + ...aneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 66 +++++++++---------- .../src/MaterialDescription.cpp | 6 +- .../src/MaterialDescription.hpp | 15 ++--- 4 files changed, 44 insertions(+), 46 deletions(-) diff --git a/src/Common/src/Constants.hpp b/src/Common/src/Constants.hpp index 6efef56d..8395a8dd 100644 --- a/src/Common/src/Constants.hpp +++ b/src/Common/src/Constants.hpp @@ -17,4 +17,7 @@ namespace ConstantsData static const double wavelengthErrorTolerance = 1e-6; static const double ELECTRON_CHARGE = 1.502e-19; static const double EOGHeight = 0.0635; // meters + + //! Default ratio used in scaling of dual band materials. + static const double NIRRatio = 0.49; } // namespace ConstantsData diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index 1ea550e6..19e2b7aa 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -117,7 +117,7 @@ class MultiPaneBSDF_102_BSDFMaterial_2011_SA1 : public testing::Test // clang-format off -std::vector> TransmittanceFrontSolar(){ +static std::vector> TransmittanceFrontSolar(){ return { {2.03376,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, {0.022252,2.00906,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243}, @@ -268,7 +268,7 @@ return { } -std::vector> TransmittanceBackSolar(){ +static std::vector> TransmittanceBackSolar(){ return { {2.03376,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, {0.02175,2.00906,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868}, @@ -419,7 +419,7 @@ return { } -std::vector> ReflectanceFrontSolar(){ +static std::vector> ReflectanceFrontSolar(){ return { {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, @@ -570,7 +570,7 @@ return { } -std::vector> ReflectanceBackSolar(){ +static std::vector> ReflectanceBackSolar(){ return { {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, @@ -721,7 +721,7 @@ return { } -std::vector> TransmittanceFrontVisible(){ +static std::vector> TransmittanceFrontVisible(){ return { {2.063833,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, {0.014954,2.027935,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169}, @@ -872,7 +872,7 @@ return { } -std::vector> TransmittanceBackVisible(){ +static std::vector> TransmittanceBackVisible(){ return { {2.063833,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, {0.014456,2.027935,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043}, @@ -1023,7 +1023,7 @@ return { } -std::vector> ReflectanceFrontVisible(){ +static std::vector> ReflectanceFrontVisible(){ return { {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, @@ -1174,7 +1174,7 @@ return { } -std::vector> ReflectanceBackVisible(){ +static std::vector> ReflectanceBackVisible(){ return { {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, @@ -1340,37 +1340,37 @@ return { auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - //aMaterial_102->setBandWavelengths(condensedSpectrum); + aMaterial_102->setBandWavelengths(condensedSpectrum); const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); - //auto tfSolar = TransmittanceFrontSolar(); - //auto tbSolar = TransmittanceBackSolar(); - //auto rfSolar = ReflectanceFrontSolar(); - //auto rbSolar = ReflectanceBackSolar(); - //auto tfVisible = TransmittanceFrontVisible(); - //auto tbVisible = TransmittanceBackVisible(); - //auto rfVisible = ReflectanceFrontVisible(); - //auto rbVisible = ReflectanceBackVisible(); - // - //auto nirRatio{0.49}; - //const auto aBSDFMaterial = Material::dualBandBSDFMaterial(tfSolar, - // tbSolar, - // rfSolar, - // rbSolar, - // tfVisible, - // tbVisible, - // rfVisible, - // rbVisible, - // aBSDF, - // nirRatio); + auto tfSolar = TransmittanceFrontSolar(); + auto tbSolar = TransmittanceBackSolar(); + auto rfSolar = ReflectanceFrontSolar(); + auto rbSolar = ReflectanceBackSolar(); + auto tfVisible = TransmittanceFrontVisible(); + auto tbVisible = TransmittanceBackVisible(); + auto rfVisible = ReflectanceFrontVisible(); + auto rbVisible = ReflectanceBackVisible(); - //aBSDFMaterial->setBandWavelengths(condensedSpectrum); + auto nirRatio{0.499}; + const auto aBSDFMaterial = Material::dualBandBSDFMaterial(tfSolar, + tbSolar, + rfSolar, + rbSolar, + tfVisible, + tbVisible, + rfVisible, + rbVisible, + aBSDF, + nirRatio); + + aBSDFMaterial->setBandWavelengths(condensedSpectrum); auto Layer_Glass = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); Layer_Glass->setBandWavelengths(condensedSpectrum); - //auto Layer_BSDF = CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); + auto Layer_BSDF = CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); - m_Layer = CMultiPaneBSDF::create({Layer_Glass}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_Glass, Layer_BSDF}, loadSolarRadiationFile()); } public: @@ -1394,7 +1394,7 @@ TEST_F(MultiPaneBSDF_102_BSDFMaterial_2011_SA1, TestBSDFMatrixAsInput) double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.8442013960790028, tauHem, 1e-6); + EXPECT_NEAR(0.103154, tauHem, 1e-6); //double rhoFrontHem = // aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index 733100cb..4ea0318c 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -350,7 +350,7 @@ namespace SingleLayerOptics } //////////////////////////////////////////////////////////////////////////////////// - //// CMaterialDualBand + //// IMaterialDualBand //////////////////////////////////////////////////////////////////////////////////// IMaterialDualBand::IMaterialDualBand(const std::shared_ptr & t_PartialRange, @@ -382,7 +382,7 @@ namespace SingleLayerOptics //double lowLambda = m_MaterialPartialRange->getMinLambda(); //double highLambda = m_MaterialPartialRange->getMaxLambda(); //CNIRRatio nirRatio = CNIRRatio(t_SourceData, lowLambda, highLambda); - createNIRRange(m_MaterialPartialRange, m_MaterialFullRange, NIRRatio); + createNIRRange(m_MaterialPartialRange, m_MaterialFullRange, ConstantsData::NIRRatio); } void IMaterialDualBand::setDetectorData(FenestrationCommon::CSeries & t_DetectorData) @@ -506,7 +506,7 @@ namespace SingleLayerOptics //const double highLambda = m_MaterialPartialRange->getMaxLambda(); // For now we have decided to use hard NIR ratio and not calculate it from the solar radiation. // CNIRRatio nirRatio = CNIRRatio(t_SolarRadiation, lowLambda, highLambda); - createNIRRange(m_MaterialPartialRange, m_MaterialFullRange, NIRRatio); + createNIRRange(m_MaterialPartialRange, m_MaterialFullRange, ConstantsData::NIRRatio); if(!m_WavelengthsCalculated) { m_Wavelengths = getWavelengthsFromMaterials(); diff --git a/src/SingleLayerOptics/src/MaterialDescription.hpp b/src/SingleLayerOptics/src/MaterialDescription.hpp index 0a031f5d..9f14ee1c 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.hpp +++ b/src/SingleLayerOptics/src/MaterialDescription.hpp @@ -45,8 +45,6 @@ namespace SingleLayerOptics std::map> m_Surface; }; - static double NIRRatio = 0.49; - ////////////////////////////////////////////////////////////////////////////////////////// /// CMaterial ////////////////////////////////////////////////////////////////////////////////////////// @@ -213,12 +211,9 @@ namespace SingleLayerOptics class IMaterialDualBand : public CMaterial { public: - // ratio is calculated outside of the class and can be provided here. - // TODO: Need to confirm with the team if we actually need this approach - // (ratio should be calculated and not quessed) IMaterialDualBand(const std::shared_ptr & t_PartialRange, const std::shared_ptr & t_FullRange, - double t_Ratio = NIRRatio); + double t_Ratio = ConstantsData::NIRRatio); // ratio is calculated based on provided solar radiation values IMaterialDualBand(const std::shared_ptr & t_PartialRange, @@ -257,14 +252,14 @@ namespace SingleLayerOptics // Creates all of the required ranges in m_Materials from solar radiation void createRangesFromSolarRadiation(const FenestrationCommon::CSeries & t_SolarRadiation); - std::vector getWavelengthsFromMaterials() const; + [[nodiscard]] std::vector getWavelengthsFromMaterials() const; // Properties over the rest of range will depend on partial range as well. // We do want to keep correct properties of partial range, but will want to update // properties for other partial ranges that are not provided by the user. // double getModifiedProperty(double t_Range, double t_Solar, double t_Fraction) const; - std::shared_ptr getMaterialFromWavelegth(double wavelength) const; + [[nodiscard]] std::shared_ptr getMaterialFromWavelegth(double wavelength) const; std::shared_ptr m_MaterialFullRange; std::shared_ptr m_MaterialPartialRange; @@ -282,7 +277,7 @@ namespace SingleLayerOptics // (ratio should be calculated and not quessed) CMaterialDualBand(const std::shared_ptr & t_PartialRange, const std::shared_ptr & t_FullRange, - double t_Ratio = NIRRatio); + double t_Ratio = ConstantsData::NIRRatio); // ratio is calculated based on provided solar radiation values CMaterialDualBand(const std::shared_ptr & t_PartialRange, @@ -312,7 +307,7 @@ namespace SingleLayerOptics // (ratio should be calculated and not quessed) CMaterialDualBandBSDF(const std::shared_ptr & t_PartialRange, const std::shared_ptr & t_FullRange, - double t_Ratio = NIRRatio); + double t_Ratio = ConstantsData::NIRRatio); // ratio is calculated based on provided solar radiation values CMaterialDualBandBSDF(const std::shared_ptr & t_PartialRange, From 697f50dcb5f924903756c9aac454e1dc85760a2b Mon Sep 17 00:00:00 2001 From: vidanovic Date: Fri, 22 Jul 2022 18:22:20 -0700 Subject: [PATCH 05/81] Materials scaling for 0.3 to 0.32 range --- .../src/MaterialDescription.cpp | 16 +- .../src/MaterialDescription.hpp | 2 +- .../tst/units/BSDFMaterialDualBand.unit.cpp | 17 +- ...larPerforatedShadeMultiWavelength.unit.cpp | 417 ++---------------- 4 files changed, 57 insertions(+), 395 deletions(-) diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index 4ea0318c..2c5faff1 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -114,7 +114,7 @@ namespace SingleLayerOptics double minRangeLambda = t_PartialRange->getMinLambda(); - if(minRangeLambda > 0.32) + if(minRangeLambda > 0.3) { std::shared_ptr aMaterial = std::make_shared(Tf_nir, @@ -122,7 +122,7 @@ namespace SingleLayerOptics Rf_nir, Rb_nir, t_PartialRange->getHemisphere(), - 0.32, + 0.3, minRangeLambda); materials.push_back(aMaterial); } @@ -378,7 +378,7 @@ namespace SingleLayerOptics m_MaterialFullRange->setSourceData(t_SourceData); m_MaterialPartialRange->setSourceData(t_SourceData); checkIfMaterialWithingSolarRange(*m_MaterialPartialRange); - createUVRange(); + //createUVRange(); //double lowLambda = m_MaterialPartialRange->getMinLambda(); //double highLambda = m_MaterialPartialRange->getMaxLambda(); //CNIRRatio nirRatio = CNIRRatio(t_SourceData, lowLambda, highLambda); @@ -432,14 +432,14 @@ namespace SingleLayerOptics return aWavelengths; } - void IMaterialDualBand::checkIfMaterialWithingSolarRange(const CMaterial & t_Material) const + void IMaterialDualBand::checkIfMaterialWithingSolarRange(const CMaterial & t_Material) { const double lowLambda = t_Material.getMinLambda(); const double highLambda = t_Material.getMaxLambda(); - if(lowLambda < 0.32 || highLambda < 0.32 || lowLambda > 2.5 || highLambda > 2.5) + if(lowLambda < 0.3 || highLambda < 0.3 || lowLambda > 2.5 || highLambda > 2.5) { throw std::runtime_error("Material properties out of range. Wavelength range must be " - "between 0.32 and 2.5 microns."); + "between 0.3 and 2.5 microns."); } } @@ -484,7 +484,7 @@ namespace SingleLayerOptics return; } checkIfMaterialWithingSolarRange(*m_MaterialPartialRange); - createUVRange(); + //createUVRange(); createNIRRange(m_MaterialPartialRange, m_MaterialFullRange, t_Ratio); if(!m_WavelengthsCalculated) @@ -521,7 +521,7 @@ namespace SingleLayerOptics if(m_MaterialFullRange != nullptr && m_MaterialPartialRange != nullptr) { result.emplace_back(m_MaterialFullRange->getMinLambda()); - result.emplace_back(0.32); + //result.emplace_back(0.32); result.emplace_back(m_MaterialPartialRange->getMinLambda()); result.emplace_back(m_MaterialPartialRange->getMaxLambda()); result.emplace_back(m_MaterialFullRange->getMaxLambda()); diff --git a/src/SingleLayerOptics/src/MaterialDescription.hpp b/src/SingleLayerOptics/src/MaterialDescription.hpp index 9f14ee1c..393b7b2f 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.hpp +++ b/src/SingleLayerOptics/src/MaterialDescription.hpp @@ -238,7 +238,7 @@ namespace SingleLayerOptics protected: std::vector calculateBandWavelengths() override; // Checks if material is within valid range. Otherwise, algorithm is not valid. - void checkIfMaterialWithingSolarRange(const CMaterial & t_Material) const; + static void checkIfMaterialWithingSolarRange(const CMaterial & t_Material) ; void createUVRange(); // Creates after UV range and stores data into m_Materials diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp index caba1f99..008e86e6 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp @@ -31,7 +31,7 @@ class TestBSDFMaterialDualBand : public testing::Test std::vector> loadTfVis() { std::vector> data{ - {2.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174}, + {1.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174}, {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, @@ -118,19 +118,24 @@ TEST_F(TestBSDFMaterialDualBand, TestProperties) // Test to make sure an off-normal incoming and outgoing angle produce the same result // as the value returned by the CMaterialSingleBandBSDF that represents the full range - double incomingTheta = 37; - double incomingPhi = 76; - double outgoingTheta = 62; - double outgoingPhi = 23; + double incomingTheta = 0; + double incomingPhi = 0; + double outgoingTheta = 0; + double outgoingPhi = 0; CBeamDirection incomingDirection(incomingTheta, incomingPhi); CBeamDirection outgoingDirection(outgoingTheta, outgoingPhi); EXPECT_EQ( m_Material->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection), m_MaterialSol->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection)); + const auto wavelengths{m_Material->getBandWavelengths()}; + const std::vector correctWavelengths{0.3, 0.38, 0.78}; + EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); + EXPECT_EQ(wavelengths, correctWavelengths); + // Test to make sure getBandProperties returns the correctly scaled values // for each of the calculated wavelength bands. auto bandProperties = m_Material->getBandProperties(Property::T, Side::Front, incomingDirection, outgoingDirection); - std::vector expectedBandProperties{0, 0.012749736954558742, 0.012749736954558742, 0.012749736954558742, 0.012749736954558742}; + std::vector expectedBandProperties{0.120559, 0.041619, 0.120559}; EXPECT_EQ(bandProperties, expectedBandProperties); } \ No newline at end of file diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp index c2322d6d..53de1f8b 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp @@ -61,7 +61,7 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa std::shared_ptr>> aResults = aLayer->getWavelengthResults(); - size_t correctSize = 4; + size_t correctSize = 3; EXPECT_EQ(correctSize, aResults->size()); @@ -74,48 +74,12 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Test only diagonal of transmittance matrix size_t size = aT.size(); - std::vector correctResults; - correctResults.push_back(3.323538); - correctResults.push_back(3.233753); - correctResults.push_back(3.233753); - correctResults.push_back(3.233753); - correctResults.push_back(3.233753); - correctResults.push_back(3.233753); - correctResults.push_back(3.233753); - correctResults.push_back(3.233753); - correctResults.push_back(3.233753); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(2.598526); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(1.952399); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); + std::vector correctResults{ + 3.324467, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, + 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, + 2.599524, 2.599524, 2.599524, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, + 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 0.001248, 0.001248, 0.001248, + 0.001248, 0.001248, 0.001248, 0.001248, 0.001248}; std::vector calculatedResults; for(size_t i = 0; i < size; ++i) @@ -132,50 +96,13 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Front reflectance auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); calculatedResults.clear(); - - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); + correctResults = {0.188652, 0.194951, 0.194951, 0.194951, 0.194951, 0.194951, 0.194951, + 0.194951, 0.194951, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, + 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, + 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, + 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.253400, 0.253400, + 0.253400, 0.253400, 0.253400, 0.253400, 0.253400, 0.253400}; for(size_t i = 0; i < size; ++i) { @@ -197,50 +124,13 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Test only diagonal of transmittance matrix size = aT.size(); - correctResults.clear(); calculatedResults.clear(); - - correctResults.push_back(3.324467); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); + correctResults = {3.370933, 3.282731, 3.282731, 3.282731, 3.282731, 3.282731, 3.282731, + 3.282731, 3.282731, 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, + 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, + 2.006498, 2.006498, 2.006498, 2.006498, 2.006498, 2.006498, 2.006498, + 2.006498, 2.006498, 2.006498, 2.006498, 2.006498, 0.063662, 0.063662, + 0.063662, 0.063662, 0.063662, 0.063662, 0.063662, 0.063662}; for(size_t i = 0; i < size; ++i) { @@ -256,50 +146,13 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Front reflectance aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); calculatedResults.clear(); - - correctResults.push_back(0.188652); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); + correctResults = {0.142186, 0.146934, 0.146934, 0.146934, 0.146934, 0.146934, 0.146934, + 0.146934, 0.146934, 0.152802, 0.152802, 0.152802, 0.152802, 0.152802, + 0.152802, 0.152802, 0.152802, 0.152802, 0.152802, 0.152802, 0.152802, + 0.162296, 0.162296, 0.162296, 0.162296, 0.162296, 0.162296, 0.162296, + 0.162296, 0.162296, 0.162296, 0.162296, 0.162296, 0.190986, 0.190986, + 0.190986, 0.190986, 0.190986, 0.190986, 0.190986, 0.190986}; for(size_t i = 0; i < size; ++i) { @@ -321,50 +174,14 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Test only diagonal of transmittance matrix size = aT.size(); - correctResults.clear(); calculatedResults.clear(); - correctResults.push_back(3.370933); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.649460); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); + correctResults = { + 3.324467, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, + 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, + 2.599524, 2.599524, 2.599524, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, + 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 0.001248, 0.001248, 0.001248, + 0.001248, 0.001248, 0.001248, 0.001248, 0.001248}; for(size_t i = 0; i < size; ++i) { @@ -380,174 +197,14 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Front reflectance aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - calculatedResults.clear(); - - correctResults.push_back(0.142186); - correctResults.push_back(0.146934); - correctResults.push_back(0.146934); - correctResults.push_back(0.146934); - correctResults.push_back(0.146934); - correctResults.push_back(0.146934); - correctResults.push_back(0.146934); - correctResults.push_back(0.146934); - correctResults.push_back(0.146934); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.152802); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.162296); - correctResults.push_back(0.190986); - correctResults.push_back(0.190986); - correctResults.push_back(0.190986); - correctResults.push_back(0.190986); - correctResults.push_back(0.190986); - correctResults.push_back(0.190986); - correctResults.push_back(0.190986); - correctResults.push_back(0.190986); - - for(size_t i = 0; i < size; ++i) - { - calculatedResults.push_back(aRf(i, i)); - } - - EXPECT_EQ(correctResults.size(), calculatedResults.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); - } - - /////////////////////////////////////////////////////////////////////// - // Wavelength number 4 - /////////////////////////////////////////////////////////////////////// - - aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); - - // Test only diagonal of transmittance matrix - size = aT.size(); - - correctResults.clear(); - calculatedResults.clear(); - - correctResults.push_back(3.324467); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(3.234714); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(2.599525); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(1.953460); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - correctResults.push_back(0.001248); - - for(size_t i = 0; i < size; ++i) - { - calculatedResults.push_back(aT(i, i)); - } - - EXPECT_EQ(correctResults.size(), calculatedResults.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); - } - - // Front reflectance - aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); - - correctResults.clear(); calculatedResults.clear(); - correctResults.push_back(0.188652); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.194951); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.202737); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.215334); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); - correctResults.push_back(0.253400); + correctResults = {0.188652, 0.194951, 0.194951, 0.194951, 0.194951, 0.194951, 0.194951, + 0.194951, 0.194951, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, + 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, + 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, + 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.253400, 0.253400, + 0.253400, 0.253400, 0.253400, 0.253400, 0.253400, 0.253400}; for(size_t i = 0; i < size; ++i) { From d63f49c766bc2f60126a394795a3a211cf99debd Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Mon, 25 Jul 2022 13:19:09 -0700 Subject: [PATCH 06/81] Visble range offset introduced for the dual band material. --- src/Common/src/Constants.hpp | 11 +- src/Common/src/WavelengthRange.hpp | 6 +- src/SingleLayerOptics/src/BSDFDirections.cpp | 2 +- src/SingleLayerOptics/src/BSDFThetaLimits.cpp | 7 +- src/SingleLayerOptics/src/BSDFThetaLimits.hpp | 4 +- .../src/MaterialDescription.cpp | 9 +- .../tst/units/BSDFMaterialDualBand.unit.cpp | 247 ++++++----- .../units/BSDFThetaLimitsFullBasis.unit.cpp | 2 +- .../units/BSDFThetaLimitsHalfBasis.unit.cpp | 2 +- .../BSDFThetaLimitsQuarterBasis.unit.cpp | 2 +- .../units/DoubleRangeMaterialRatio.unit.cpp | 20 +- ...DoubleRangeMaterialSolarRadiation.unit.cpp | 30 +- ...onalShadeFlat45_5_Multiwavelength.unit.cpp | 402 +++--------------- ...formShadeFlat45_5_Multiwavelength.unit.cpp | 393 +++-------------- .../units/WovenShadeMultiWavelength.unit.cpp | 97 ++--- 15 files changed, 316 insertions(+), 918 deletions(-) diff --git a/src/Common/src/Constants.hpp b/src/Common/src/Constants.hpp index 8395a8dd..78c927ca 100644 --- a/src/Common/src/Constants.hpp +++ b/src/Common/src/Constants.hpp @@ -18,6 +18,13 @@ namespace ConstantsData static const double ELECTRON_CHARGE = 1.502e-19; static const double EOGHeight = 0.0635; // meters - //! Default ratio used in scaling of dual band materials. - static const double NIRRatio = 0.49; + //! Default ratio used in scaling of the materials that are defined only with solar and visible + //! range. + static const double NIRRatio = 0.499; + + //! This is used in conjuntion with materials that are defined with solar and visible range + //! only. Since that material at the wavelength of 0.78 needs to return visible properties, this + //! will be used to create small offset from the end of the visible range to make sure that + //! visible properties are returned in that case. + static const double VisibleRangeOffset = 2 * wavelengthErrorTolerance; } // namespace ConstantsData diff --git a/src/Common/src/WavelengthRange.hpp b/src/Common/src/WavelengthRange.hpp index 9ea8b233..3f350eca 100644 --- a/src/Common/src/WavelengthRange.hpp +++ b/src/Common/src/WavelengthRange.hpp @@ -25,8 +25,8 @@ namespace FenestrationCommon { public: explicit CWavelengthRange(const WavelengthRange t_Range); - double minLambda() const; - double maxLambda() const; + [[nodiscard]] double minLambda() const; + [[nodiscard]] double maxLambda() const; private: void setWavelengthRange(const WavelengthRange t_Range); @@ -35,7 +35,7 @@ namespace FenestrationCommon const std::map m_WavelengthRange{ {WavelengthRange::IR, {5.0, 100.0}}, {WavelengthRange::Solar, {0.3, 2.5}}, - {WavelengthRange::Visible, {0.38, 0.78}}}; + {WavelengthRange::Visible, {0.38, 0.78 + ConstantsData::VisibleRangeOffset}}}; }; // namespace FenestrationCommon } // namespace FenestrationCommon diff --git a/src/SingleLayerOptics/src/BSDFDirections.cpp b/src/SingleLayerOptics/src/BSDFDirections.cpp index 981fcbb0..37126eca 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.cpp +++ b/src/SingleLayerOptics/src/BSDFDirections.cpp @@ -47,7 +47,7 @@ namespace SingleLayerOptics } CThetaLimits ThetaLimits(thetaAngles); - std::vector thetaLimits = *ThetaLimits.getThetaLimits(); + const auto thetaLimits{ThetaLimits.getThetaLimits()}; double lowerTheta = thetaLimits[0]; for(size_t i = 1; i < thetaLimits.size(); ++i) diff --git a/src/SingleLayerOptics/src/BSDFThetaLimits.cpp b/src/SingleLayerOptics/src/BSDFThetaLimits.cpp index 95d1c65d..c69fba25 100644 --- a/src/SingleLayerOptics/src/BSDFThetaLimits.cpp +++ b/src/SingleLayerOptics/src/BSDFThetaLimits.cpp @@ -11,11 +11,10 @@ namespace SingleLayerOptics throw std::runtime_error( "Error in definition of theta angles. Cannot form theta definitions."); } - m_ThetaLimits = std::make_shared>(); createLimits(t_ThetaAngles); } - std::shared_ptr> CThetaLimits::getThetaLimits() const + std::vector CThetaLimits::getThetaLimits() const { return m_ThetaLimits; } @@ -24,7 +23,7 @@ namespace SingleLayerOptics { std::vector::const_reverse_iterator it; double previousAngle = 90; - m_ThetaLimits->push_back(previousAngle); + m_ThetaLimits.push_back(previousAngle); for(it = t_ThetaAngles.rbegin(); it < t_ThetaAngles.rend(); ++it) { @@ -35,7 +34,7 @@ namespace SingleLayerOptics { limit = 0; } - m_ThetaLimits->insert(m_ThetaLimits->begin(), limit); + m_ThetaLimits.insert(m_ThetaLimits.begin(), limit); previousAngle = limit; } } diff --git a/src/SingleLayerOptics/src/BSDFThetaLimits.hpp b/src/SingleLayerOptics/src/BSDFThetaLimits.hpp index 612bb94d..bbaf2340 100644 --- a/src/SingleLayerOptics/src/BSDFThetaLimits.hpp +++ b/src/SingleLayerOptics/src/BSDFThetaLimits.hpp @@ -11,11 +11,11 @@ namespace SingleLayerOptics public: explicit CThetaLimits(const std::vector & t_ThetaAngles); - std::shared_ptr> getThetaLimits() const; + std::vector getThetaLimits() const; private: void createLimits(const std::vector & t_ThetaAngles); - std::shared_ptr> m_ThetaLimits; + std::vector m_ThetaLimits; }; } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index 2c5faff1..4d735ea1 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -75,10 +75,10 @@ namespace SingleLayerOptics double minRangeLambda = t_PartialRange->getMinLambda(); - if(minRangeLambda > 0.32) + if(minRangeLambda > 0.3) { std::shared_ptr aMaterial = std::make_shared( - Tf_nir, Tb_nir, Rf_nir, Rb_nir, 0.32, minRangeLambda); + Tf_nir, Tb_nir, Rf_nir, Rb_nir, 0.3, minRangeLambda); materials.push_back(aMaterial); } @@ -427,7 +427,7 @@ namespace SingleLayerOptics aWavelengths.push_back(m_Materials[i]->getMinLambda()); } - // aWavelengths.push_back(m_Materials.back()->getMaxLambda()); + aWavelengths.push_back(m_Materials.back()->getMaxLambda()); return aWavelengths; } @@ -501,7 +501,7 @@ namespace SingleLayerOptics return; } checkIfMaterialWithingSolarRange(*m_MaterialPartialRange); - createUVRange(); + //createUVRange(); //const double lowLambda = m_MaterialPartialRange->getMinLambda(); //const double highLambda = m_MaterialPartialRange->getMaxLambda(); // For now we have decided to use hard NIR ratio and not calculate it from the solar radiation. @@ -521,7 +521,6 @@ namespace SingleLayerOptics if(m_MaterialFullRange != nullptr && m_MaterialPartialRange != nullptr) { result.emplace_back(m_MaterialFullRange->getMinLambda()); - //result.emplace_back(0.32); result.emplace_back(m_MaterialPartialRange->getMinLambda()); result.emplace_back(m_MaterialPartialRange->getMaxLambda()); result.emplace_back(m_MaterialFullRange->getMaxLambda()); diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp index 008e86e6..242a4700 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp @@ -15,127 +15,142 @@ using namespace SpectralAveraging; class TestBSDFMaterialDualBand : public testing::Test { public: - CBSDFHemisphere m_Hemisphere{CBSDFHemisphere::create(BSDFBasis::Small)}; - std::shared_ptr m_MaterialVis; - std::shared_ptr m_MaterialSol; - std::shared_ptr m_Material; - std::vector> m_TfVis; - std::vector> m_TbVis; - std::vector> m_RfVis; - std::vector> m_RbVis; - std::vector> m_TfSol; - std::vector> m_TbSol; - std::vector> m_RfSol; - std::vector> m_RbSol; - - std::vector> loadTfVis() - { - std::vector> data{ - {1.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174}, - {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, - {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, - {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, - {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, - {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}, - {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}}; - - return data; - } - - std::vector> loadRfVis() - { - std::vector> data{ - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805}, - {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, - {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, - {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, - {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, - {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}, - {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}}; - - return data; - } - - std::vector> loadTfSol() - { - std::vector> data{ - {2.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174}, - {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, - {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, - {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, - {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, - {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}, - {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}}; - - return data; - } - - std::vector> loadRfSol() - { - std::vector> data{ - {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805}, - {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, - {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, - {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, - {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, - {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}, - {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}}; - - return data; - } + CBSDFHemisphere m_Hemisphere{CBSDFHemisphere::create(BSDFBasis::Small)}; + std::shared_ptr m_MaterialVis; + std::shared_ptr m_MaterialSol; + std::shared_ptr m_Material; + std::vector> m_TfVis; + std::vector> m_TbVis; + std::vector> m_RfVis; + std::vector> m_RbVis; + std::vector> m_TfSol; + std::vector> m_TbSol; + std::vector> m_RfSol; + std::vector> m_RbSol; + + std::vector> loadTfVis() + { + std::vector> data{ + {1.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174}, + {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, + {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, + {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, + {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, + {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}, + {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}}; + + return data; + } + + std::vector> loadRfVis() + { + std::vector> data{ + {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805}, + {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, + {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, + {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, + {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, + {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}, + {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}}; + + return data; + } + + std::vector> loadTfSol() + { + std::vector> data{ + {2.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174}, + {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, + {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, + {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, + {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, + {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}, + {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}}; + + return data; + } + + std::vector> loadRfSol() + { + std::vector> data{ + {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805}, + {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, + {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, + {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, + {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, + {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}, + {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}}; + + return data; + } protected: - virtual void SetUp() - { - m_TfVis = loadTfVis(); - m_TbVis = m_TfVis; - m_RfVis = loadRfVis(); - m_RbVis = m_RfVis; - m_MaterialVis = std::make_shared( - m_TfVis, m_TbVis, m_RfVis, m_RbVis, m_Hemisphere, FenestrationCommon::WavelengthRange::Visible); - m_TfSol = loadTfSol(); - m_TbSol = m_TfSol; - m_RfSol = loadRfSol(); - m_RbSol = m_RfSol; - m_MaterialSol = std::make_shared( - m_TfSol, m_TbSol, m_RfSol, m_RbSol, m_Hemisphere, FenestrationCommon::WavelengthRange::Solar); - m_Material = std::make_shared(m_MaterialVis, m_MaterialSol); - } + virtual void SetUp() + { + m_TfVis = loadTfVis(); + m_TbVis = m_TfVis; + m_RfVis = loadRfVis(); + m_RbVis = m_RfVis; + m_MaterialVis = + std::make_shared(m_TfVis, + m_TbVis, + m_RfVis, + m_RbVis, + m_Hemisphere, + FenestrationCommon::WavelengthRange::Visible); + m_TfSol = loadTfSol(); + m_TbSol = m_TfSol; + m_RfSol = loadRfSol(); + m_RbSol = m_RfSol; + m_MaterialSol = + std::make_shared(m_TfSol, + m_TbSol, + m_RfSol, + m_RbSol, + m_Hemisphere, + FenestrationCommon::WavelengthRange::Solar); + m_Material = std::make_shared(m_MaterialVis, m_MaterialSol); + } }; TEST_F(TestBSDFMaterialDualBand, TestProperties) { - SCOPED_TRACE("Begin Test: Properties for a single band BSDF material."); - - auto incomingDirections = m_Hemisphere.getDirections(BSDFDirection::Incoming); - auto outgoingDirections = m_Hemisphere.getDirections(BSDFDirection::Outgoing); - auto outgoingLambdas = m_Hemisphere.getDirections(BSDFDirection::Outgoing).lambdaVector(); - - // Test to make sure that the value returned by normal incidence matches the - // value returned by the CMaterialSingleBandBSDF that represents the full range - EXPECT_EQ(m_Material->getProperty(Property::T, Side::Front), m_MaterialSol->getProperty(Property::T, Side::Front)); - - // Test to make sure an off-normal incoming and outgoing angle produce the same result - // as the value returned by the CMaterialSingleBandBSDF that represents the full range - double incomingTheta = 0; - double incomingPhi = 0; - double outgoingTheta = 0; - double outgoingPhi = 0; - CBeamDirection incomingDirection(incomingTheta, incomingPhi); - CBeamDirection outgoingDirection(outgoingTheta, outgoingPhi); - EXPECT_EQ( - m_Material->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection), - m_MaterialSol->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection)); - - const auto wavelengths{m_Material->getBandWavelengths()}; - const std::vector correctWavelengths{0.3, 0.38, 0.78}; - EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); - EXPECT_EQ(wavelengths, correctWavelengths); - - // Test to make sure getBandProperties returns the correctly scaled values - // for each of the calculated wavelength bands. - auto bandProperties = m_Material->getBandProperties(Property::T, Side::Front, incomingDirection, outgoingDirection); - std::vector expectedBandProperties{0.120559, 0.041619, 0.120559}; - EXPECT_EQ(bandProperties, expectedBandProperties); + SCOPED_TRACE("Begin Test: Properties for a single band BSDF material."); + + auto incomingDirections = m_Hemisphere.getDirections(BSDFDirection::Incoming); + auto outgoingDirections = m_Hemisphere.getDirections(BSDFDirection::Outgoing); + auto outgoingLambdas = m_Hemisphere.getDirections(BSDFDirection::Outgoing).lambdaVector(); + + // Test to make sure that the value returned by normal incidence matches the + // value returned by the CMaterialSingleBandBSDF that represents the full range + EXPECT_EQ(m_Material->getProperty(Property::T, Side::Front), + m_MaterialSol->getProperty(Property::T, Side::Front)); + + // Test to make sure an off-normal incoming and outgoing angle produce the same result + // as the value returned by the CMaterialSingleBandBSDF that represents the full range + double incomingTheta = 0; + double incomingPhi = 0; + double outgoingTheta = 0; + double outgoingPhi = 0; + CBeamDirection incomingDirection(incomingTheta, incomingPhi); + CBeamDirection outgoingDirection(outgoingTheta, outgoingPhi); + EXPECT_EQ( + m_Material->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection), + m_MaterialSol->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection)); + + const auto wavelengths{m_Material->getBandWavelengths()}; + const std::vector correctWavelengths{0.3, 0.38, 0.780002, 2.5}; + EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); + EXPECT_EQ(wavelengths, correctWavelengths); + + // Test to make sure getBandProperties returns the correctly scaled values + // for each of the calculated wavelength bands. + auto bandProperties = + m_Material->getBandProperties(Property::T, Side::Front, incomingDirection, outgoingDirection); + std::vector expectedBandProperties{0.121977, 0.0416186, 0.121977}; + for(size_t i = 0u; i < expectedBandProperties.size(); ++i) + { + EXPECT_NEAR(expectedBandProperties[i], bandProperties[i], 1e-6); + } } \ No newline at end of file diff --git a/src/SingleLayerOptics/tst/units/BSDFThetaLimitsFullBasis.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFThetaLimitsFullBasis.unit.cpp index ebe0420e..a0ee0272 100644 --- a/src/SingleLayerOptics/tst/units/BSDFThetaLimitsFullBasis.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFThetaLimitsFullBasis.unit.cpp @@ -33,7 +33,7 @@ TEST_F(TestBSDFThetaLimtisFullBasis, TestFullBasis) const auto aLimits = GetLimits(); - std::vector results = *(aLimits.getThetaLimits()); + const auto results {aLimits.getThetaLimits()}; std::vector correctResults{0, 5, 15, 25, 35, 45, 55, 65, 75, 90}; EXPECT_EQ(results.size(), correctResults.size()); diff --git a/src/SingleLayerOptics/tst/units/BSDFThetaLimitsHalfBasis.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFThetaLimitsHalfBasis.unit.cpp index 969c36af..eeac69b6 100644 --- a/src/SingleLayerOptics/tst/units/BSDFThetaLimitsHalfBasis.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFThetaLimitsHalfBasis.unit.cpp @@ -33,7 +33,7 @@ TEST_F(TestBSDFThetaLimtisHalfBasis, TestHalfBasis) const auto aLimits = GetLimits(); - std::vector results = *(aLimits.getThetaLimits()); + const auto results {aLimits.getThetaLimits()}; std::vector correctResults{0, 6.5, 19.5, 32.5, 45.5, 58.5, 71.5, 90}; EXPECT_EQ(results.size(), correctResults.size()); diff --git a/src/SingleLayerOptics/tst/units/BSDFThetaLimitsQuarterBasis.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFThetaLimitsQuarterBasis.unit.cpp index b5d3dd55..ccceb894 100644 --- a/src/SingleLayerOptics/tst/units/BSDFThetaLimitsQuarterBasis.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFThetaLimitsQuarterBasis.unit.cpp @@ -33,7 +33,7 @@ TEST_F(TestBSDFThetaLimtisQuarterBasis, TestQuarterBasis) const auto aLimits = GetLimits(); - std::vector results = *(aLimits.getThetaLimits()); + const auto results{aLimits.getThetaLimits()}; std::vector correctResults{0, 9, 27, 45, 63, 90}; EXPECT_EQ(results.size(), correctResults.size()); diff --git a/src/SingleLayerOptics/tst/units/DoubleRangeMaterialRatio.unit.cpp b/src/SingleLayerOptics/tst/units/DoubleRangeMaterialRatio.unit.cpp index 45382041..8fc4aff1 100644 --- a/src/SingleLayerOptics/tst/units/DoubleRangeMaterialRatio.unit.cpp +++ b/src/SingleLayerOptics/tst/units/DoubleRangeMaterialRatio.unit.cpp @@ -52,34 +52,24 @@ TEST_F(TestDoubleRangeMaterialRatio, TestMaterialProperties) EXPECT_NEAR(0.7, R, 1e-6); // Properties at four wavelengths should have been created - size_t size = 5; + size_t size = 4; - std::vector Transmittances = aMaterial->getBandProperties(Property::T, Side::Front); + const auto Transmittances = aMaterial->getBandProperties(Property::T, Side::Front); EXPECT_EQ(size, Transmittances.size()); - std::vector correctResults; - correctResults.push_back(0); - correctResults.push_back(0.0039215686274509838); - correctResults.push_back(0.2); - correctResults.push_back(0.0039215686274509838); - correctResults.push_back(0.0039215686274509838); + std::vector correctResults{0.000399, 0.2, 0.000399, 0.000399}; for(size_t i = 0; i < size; ++i) { EXPECT_NEAR(correctResults[i], Transmittances[i], 1e-6); } - std::vector Reflectances = aMaterial->getBandProperties(Property::R, Side::Front); + const auto Reflectances = aMaterial->getBandProperties(Property::R, Side::Front); EXPECT_EQ(size, Reflectances.size()); - correctResults.clear(); - correctResults.push_back(0); - correctResults.push_back(0.79607843137254897); - correctResults.push_back(0.6); - correctResults.push_back(0.79607843137254897); - correctResults.push_back(0.79607843137254897); + correctResults = {0.799601, 0.6, 0.799601, 0.799601}; for(size_t i = 0; i < size; ++i) { diff --git a/src/SingleLayerOptics/tst/units/DoubleRangeMaterialSolarRadiation.unit.cpp b/src/SingleLayerOptics/tst/units/DoubleRangeMaterialSolarRadiation.unit.cpp index 75b22008..5c885fff 100644 --- a/src/SingleLayerOptics/tst/units/DoubleRangeMaterialSolarRadiation.unit.cpp +++ b/src/SingleLayerOptics/tst/units/DoubleRangeMaterialSolarRadiation.unit.cpp @@ -91,34 +91,34 @@ TEST_F(TestDoubleRangeMaterialSolarRadiation, TestMaterialProperties) EXPECT_NEAR(0.7, R, 1e-6); - size_t size = 5; + const auto wavelengths{aMaterial->getBandWavelengths()}; + const std::vector correctWavelengths{0.3, 0.38, 0.78}; - std::vector Transmittances = aMaterial->getBandProperties(Property::T, Side::Front); + EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); + + for(size_t i = 0; i < correctWavelengths.size(); ++i) + { + EXPECT_NEAR(wavelengths[i], correctWavelengths[i], 1e-6); + } + + size_t size = correctWavelengths.size(); + + const auto Transmittances = aMaterial->getBandProperties(Property::T, Side::Front); EXPECT_EQ(size, Transmittances.size()); - std::vector correctResults; - correctResults.push_back(0); - correctResults.push_back(0.0039215686274509838); - correctResults.push_back(0.2); - correctResults.push_back(0.0039215686274509838); - correctResults.push_back(0.0039215686274509838); + std::vector correctResults{0.000399, 0.2, 0.000399, 0.000399}; for(size_t i = 0; i < size; ++i) { EXPECT_NEAR(correctResults[i], Transmittances[i], 1e-6); } - std::vector Reflectances = aMaterial->getBandProperties(Property::R, Side::Front); + const auto Reflectances = aMaterial->getBandProperties(Property::R, Side::Front); EXPECT_EQ(size, Reflectances.size()); - correctResults.clear(); - correctResults.push_back(0); - correctResults.push_back(0.79607843137254897); - correctResults.push_back(0.6); - correctResults.push_back(0.79607843137254897); - correctResults.push_back(0.79607843137254897); + correctResults = {0.799601, 0.6, 0.799601, 0.799601}; for(size_t i = 0; i < size; ++i) { diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp index 7fd2ec5d..55901a39 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp @@ -70,7 +70,16 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa std::shared_ptr>> aResults = aLayer->getWavelengthResults(); - size_t correctSize = 5; + const auto wavelengths{aLayer->getBandWavelengths()}; + const std::vector correctWavelengths{0.3, 0.38, 0.780001, 2.5}; + + EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); + for(size_t i = 0u; i < correctWavelengths.size(); ++i) + { + EXPECT_NEAR(wavelengths[i], correctWavelengths[i], 1e-6); + } + + size_t correctSize = correctWavelengths.size(); EXPECT_EQ(correctSize, aResults->size()); @@ -83,48 +92,12 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Test only diagonal of transmittance matrix size_t size = aT.size(); - std::vector correctResults; - correctResults.push_back(0.74389667783099223); - correctResults.push_back(0.80180071560500688); - correctResults.push_back(3.83865423418496250); - correctResults.push_back(5.09656014852123370); - correctResults.push_back(3.83865423418496250); - correctResults.push_back(0.80180071560500688); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.74331014167182330); - correctResults.push_back(5.19471881376132400); - correctResults.push_back(8.45337612698354770); - correctResults.push_back(9.64612748585082080); - correctResults.push_back(8.45337612698354770); - correctResults.push_back(5.19471881376132400); - correctResults.push_back(0.74331014167182330); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.74331014167182419); - correctResults.push_back(9.17617976833100530); - correctResults.push_back(10.6445051622640850); - correctResults.push_back(8.38492455592380990); - correctResults.push_back(10.6445051622640850); - correctResults.push_back(9.17617976833100530); - correctResults.push_back(0.74331014167182419); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.70660053056312777); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.70660053056312777); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); - correctResults.push_back(0.00000000000000000); + std::vector correctResults{ + 0.810591, 0.868495, 3.878222, 5.126954, 3.878222, 0.868495, 0.054218, 0.050793, 0.054218, + 0.810004, 5.221758, 8.462545, 9.651114, 8.462545, 5.221758, 0.810004, 0.046418, 0.029956, + 0.028063, 0.029956, 0.046418, 0.810004, 9.182664, 10.646963, 8.394372, 10.646963, 9.182664, + 0.810004, 0.028635, 0.017473, 0.015928, 0.017473, 0.028635, 0.773294, 0.126744, 0.126608, + 0.126744, 0.773294, 0.009315, 0.00915, 0.009315}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -135,49 +108,12 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Front reflectance auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); + correctResults = {0.196291, 0.196291, 0.150276, 0.138258, 0.150276, 0.196291, 0.158764, + 0.13836, 0.158764, 0.196291, 0.126729, 0.070042, 0.053571, 0.070042, + 0.126729, 0.196291, 0.130237, 0.074786, 0.054869, 0.074786, 0.130237, + 0.196291, 0.060051, 0.006725, 0.012817, 0.006725, 0.060051, 0.196291, + 0.062692, 0.00811, 0.014968, 0.00811, 0.062692, 0.196291, 0.036972, + 0.04909, 0.036972, 0.196291, 0.046854, 0.046395, 0.046854}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) @@ -194,49 +130,12 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Test only diagonal of transmittance matrix size = aT.size(); - correctResults.clear(); - - correctResults.push_back(0.810985663669468670); - correctResults.push_back(0.868889701443483320); - correctResults.push_back(3.878456825501505300); - correctResults.push_back(5.127134841249222100); - correctResults.push_back(3.878456825501505300); - correctResults.push_back(0.868889701443483320); - correctResults.push_back(0.054756929401648835); - correctResults.push_back(0.051389275815072119); - correctResults.push_back(0.054756929401648835); - correctResults.push_back(0.810399127510299740); - correctResults.push_back(5.221918264087316100); - correctResults.push_back(8.462600155511379900); - correctResults.push_back(9.651144332384166800); - correctResults.push_back(8.462600155511379900); - correctResults.push_back(5.221918264087316100); - correctResults.push_back(0.810399127510299740); - correctResults.push_back(0.047001840695730615); - correctResults.push_back(0.030441072745030544); - correctResults.push_back(0.028524705634764967); - correctResults.push_back(0.030441072745030544); - correctResults.push_back(0.047001840695730615); - correctResults.push_back(0.810399127510300630); - correctResults.push_back(9.182702486745910200); - correctResults.push_back(10.64697785943013200); - correctResults.push_back(8.394428606409652700); - correctResults.push_back(10.64697785943013200); - correctResults.push_back(9.182702486745910200); - correctResults.push_back(0.810399127510300630); - correctResults.push_back(0.029105050579956087); - correctResults.push_back(0.017559926372523890); - correctResults.push_back(0.015982209312473284); - correctResults.push_back(0.017559926372523890); - correctResults.push_back(0.029105050579956087); - correctResults.push_back(0.773689516401604220); - correctResults.push_back(0.126076328808883390); - correctResults.push_back(0.125697042689946390); - correctResults.push_back(0.126076328808883390); - correctResults.push_back(0.773689516401604220); - correctResults.push_back(0.009367221424572298); - correctResults.push_back(0.009210548260682570); - correctResults.push_back(0.009367221424572298); + correctResults = {0.836275, 0.894179, 3.893461, 5.13866, 3.893461, 0.894179, 0.088417, + 0.088474, 0.088417, 0.835689, 5.232171, 8.466077, 9.653035, 8.466077, + 5.232171, 0.835689, 0.083366, 0.061722, 0.058886, 0.061722, 0.083366, + 0.835689, 9.185161, 10.647909, 8.398011, 10.647909, 9.185161, 0.835689, + 0.059735, 0.027508, 0.024511, 0.027508, 0.059735, 0.798979, 0.093292, + 0.079357, 0.093292, 0.798979, 0.01731, 0.018209, 0.01731}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -247,49 +146,12 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Front reflectance aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.149928590480610830); - correctResults.push_back(0.137941160815866220); - correctResults.push_back(0.149928590480610830); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.158391939325068450); - correctResults.push_back(0.138042575478963450); - correctResults.push_back(0.158391939325068450); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.126443022652177330); - correctResults.push_back(0.069895870182664382); - correctResults.push_back(0.053460518477694341); - correctResults.push_back(0.069895870182664382); - correctResults.push_back(0.126443022652177330); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.129940864327154710); - correctResults.push_back(0.074626283497912074); - correctResults.push_back(0.054754158084382533); - correctResults.push_back(0.074626283497912074); - correctResults.push_back(0.129940864327154710); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.059926558202154465); - correctResults.push_back(0.006844552101026188); - correctResults.push_back(0.013061745337847886); - correctResults.push_back(0.006844552101026188); - correctResults.push_back(0.059926558202154465); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.062559882884446152); - correctResults.push_back(0.008237279967413455); - correctResults.push_back(0.015225581075918348); - correctResults.push_back(0.008237279967413455); - correctResults.push_back(0.062559882884446152); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.038177194245758286); - correctResults.push_back(0.051413733084179278); - correctResults.push_back(0.038177194245758286); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.048262934352637205); - correctResults.push_back(0.048740046603877221); - correctResults.push_back(0.048262934352637205); + correctResults = {0.165903, 0.165903, 0.127956, 0.117843, 0.127956, 0.165903, 0.134906, + 0.117926, 0.134906, 0.165903, 0.108225, 0.060355, 0.046206, 0.060355, + 0.108225, 0.165903, 0.111117, 0.064266, 0.047276, 0.064266, 0.111117, + 0.165903, 0.051783, 0.014108, 0.027952, 0.014108, 0.051783, 0.165903, + 0.05396, 0.016014, 0.030913, 0.016014, 0.05396, 0.165903, 0.107196, + 0.181881, 0.107196, 0.165903, 0.128611, 0.180142, 0.128611}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) @@ -306,49 +168,12 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Test only diagonal of transmittance matrix size = aT.size(); - correctResults.clear(); - - correctResults.push_back(0.836275880754398400); - correctResults.push_back(0.894179918528413050); - correctResults.push_back(3.893461019742295200); - correctResults.push_back(5.138660438286230200); - correctResults.push_back(3.893461019742295200); - correctResults.push_back(0.894179918528413050); - correctResults.push_back(0.088417695248090525); - correctResults.push_back(0.088474910851309277); - correctResults.push_back(0.088417695248090525); - correctResults.push_back(0.835689344595229480); - correctResults.push_back(5.232171511989904800); - correctResults.push_back(8.466077293836708200); - correctResults.push_back(9.653035509249107800); - correctResults.push_back(8.466077293836708200); - correctResults.push_back(5.232171511989904800); - correctResults.push_back(0.835689344595229480); - correctResults.push_back(0.083366975858566325); - correctResults.push_back(0.061722153521553885); - correctResults.push_back(0.058886242955618555); - correctResults.push_back(0.061722153521553885); - correctResults.push_back(0.083366975858566325); - correctResults.push_back(0.835689344595230370); - correctResults.push_back(9.185161324998347300); - correctResults.push_back(10.64790998036374100); - correctResults.push_back(8.398011303285587200); - correctResults.push_back(10.64790998036374100); - correctResults.push_back(9.185161324998347300); - correctResults.push_back(0.835689344595230370); - correctResults.push_back(0.059735559077405055); - correctResults.push_back(0.027508020796803857); - correctResults.push_back(0.024511810701834273); - correctResults.push_back(0.027508020796803857); - correctResults.push_back(0.059735559077405055); - correctResults.push_back(0.798979733486533950); - correctResults.push_back(0.093292300851503973); - correctResults.push_back(0.079357844380076134); - correctResults.push_back(0.093292300851503973); - correctResults.push_back(0.798979733486533950); - correctResults.push_back(0.017310537462612144); - correctResults.push_back(0.018209736057913754); - correctResults.push_back(0.017310537462612144); + correctResults = { + 0.810591, 0.868495, 3.878222, 5.126954, 3.878222, 0.868495, 0.054218, 0.050793, 0.054218, + 0.810004, 5.221758, 8.462545, 9.651114, 8.462545, 5.221758, 0.810004, 0.046418, 0.029956, + 0.028063, 0.029956, 0.046418, 0.810004, 9.182664, 10.646963, 8.394372, 10.646963, 9.182664, + 0.810004, 0.028635, 0.017473, 0.015928, 0.017473, 0.028635, 0.773294, 0.126744, 0.126608, + 0.126744, 0.773294, 0.009315, 0.00915, 0.009315}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -359,49 +184,12 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Front reflectance aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.127956545925703070); - correctResults.push_back(0.117843124975481240); - correctResults.push_back(0.127956545925703070); - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.134906386909191520); - correctResults.push_back(0.117926403568254980); - correctResults.push_back(0.134906386909191520); - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.108225759077810250); - correctResults.push_back(0.060355829056359361); - correctResults.push_back(0.046206747713723524); - correctResults.push_back(0.060355829056359361); - correctResults.push_back(0.108225759077810250); - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.111117195342986560); - correctResults.push_back(0.064266151443683694); - correctResults.push_back(0.047276114717840656); - correctResults.push_back(0.064266151443683694); - correctResults.push_back(0.111117195342986560); - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.051783295867258577); - correctResults.push_back(0.014108177373773591); - correctResults.push_back(0.027952498113038276); - correctResults.push_back(0.014108177373773591); - correctResults.push_back(0.051783295867258577); - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.053960092644205690); - correctResults.push_back(0.016014184991125564); - correctResults.push_back(0.030913799813821443); - correctResults.push_back(0.016014184991125564); - correctResults.push_back(0.053960092644205690); - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.107196920174651770); - correctResults.push_back(0.181881555366362770); - correctResults.push_back(0.107196920174651770); - correctResults.push_back(0.165903843794496520); - correctResults.push_back(0.128611259539473550); - correctResults.push_back(0.180142928161266060); - correctResults.push_back(0.128611259539473550); + correctResults = {0.196291, 0.196291, 0.150276, 0.138258, 0.150276, 0.196291, 0.158764, + 0.13836, 0.158764, 0.196291, 0.126729, 0.070042, 0.053571, 0.070042, + 0.126729, 0.196291, 0.130237, 0.074786, 0.054869, 0.074786, 0.130237, + 0.196291, 0.060051, 0.006725, 0.012817, 0.006725, 0.060051, 0.196291, + 0.062692, 0.00811, 0.014968, 0.00811, 0.062692, 0.196291, 0.036972, + 0.04909, 0.036972, 0.196291, 0.046854, 0.046395, 0.046854}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) @@ -418,49 +206,12 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Test only diagonal of transmittance matrix size = aT.size(); - correctResults.clear(); - - correctResults.push_back(0.810985663669468670); - correctResults.push_back(0.868889701443483320); - correctResults.push_back(3.878456825501505300); - correctResults.push_back(5.127134841249222100); - correctResults.push_back(3.878456825501505300); - correctResults.push_back(0.868889701443483320); - correctResults.push_back(0.054756929401648835); - correctResults.push_back(0.051389275815072119); - correctResults.push_back(0.054756929401648835); - correctResults.push_back(0.810399127510299740); - correctResults.push_back(5.221918264087316100); - correctResults.push_back(8.462600155511379900); - correctResults.push_back(9.651144332384166800); - correctResults.push_back(8.462600155511379900); - correctResults.push_back(5.221918264087316100); - correctResults.push_back(0.810399127510299740); - correctResults.push_back(0.047001840695730615); - correctResults.push_back(0.030441072745030544); - correctResults.push_back(0.028524705634764967); - correctResults.push_back(0.030441072745030544); - correctResults.push_back(0.047001840695730615); - correctResults.push_back(0.810399127510300630); - correctResults.push_back(9.182702486745910200); - correctResults.push_back(10.64697785943013200); - correctResults.push_back(8.394428606409652700); - correctResults.push_back(10.64697785943013200); - correctResults.push_back(9.182702486745910200); - correctResults.push_back(0.810399127510300630); - correctResults.push_back(0.029105050579956087); - correctResults.push_back(0.017559926372523890); - correctResults.push_back(0.015982209312473284); - correctResults.push_back(0.017559926372523890); - correctResults.push_back(0.029105050579956087); - correctResults.push_back(0.773689516401604220); - correctResults.push_back(0.126076328808883390); - correctResults.push_back(0.125697042689946390); - correctResults.push_back(0.126076328808883390); - correctResults.push_back(0.773689516401604220); - correctResults.push_back(0.009367221424572298); - correctResults.push_back(0.009210548260682570); - correctResults.push_back(0.009367221424572298); + correctResults = { + 0.810591, 0.868495, 3.878222, 5.126954, 3.878222, 0.868495, 0.054218, 0.050793, 0.054218, + 0.810004, 5.221758, 8.462545, 9.651114, 8.462545, 5.221758, 0.810004, 0.046418, 0.029956, + 0.028063, 0.029956, 0.046418, 0.810004, 9.182664, 10.646963, 8.394372, 10.646963, 9.182664, + 0.810004, 0.028635, 0.017473, 0.015928, 0.017473, 0.028635, 0.773294, 0.126744, 0.126608, + 0.126744, 0.773294, 0.009315, 0.00915, 0.009315}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -471,49 +222,12 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Front reflectance aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.149928590480610830); - correctResults.push_back(0.137941160815866220); - correctResults.push_back(0.149928590480610830); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.158391939325068450); - correctResults.push_back(0.138042575478963450); - correctResults.push_back(0.158391939325068450); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.126443022652177330); - correctResults.push_back(0.069895870182664382); - correctResults.push_back(0.053460518477694341); - correctResults.push_back(0.069895870182664382); - correctResults.push_back(0.126443022652177330); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.129940864327154710); - correctResults.push_back(0.074626283497912074); - correctResults.push_back(0.054754158084382533); - correctResults.push_back(0.074626283497912074); - correctResults.push_back(0.129940864327154710); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.059926558202154465); - correctResults.push_back(0.006844552101026188); - correctResults.push_back(0.013061745337847886); - correctResults.push_back(0.006844552101026188); - correctResults.push_back(0.059926558202154465); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.062559882884446152); - correctResults.push_back(0.008237279967413455); - correctResults.push_back(0.015225581075918348); - correctResults.push_back(0.008237279967413455); - correctResults.push_back(0.062559882884446152); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.038177194245758286); - correctResults.push_back(0.051413733084179278); - correctResults.push_back(0.038177194245758286); - correctResults.push_back(0.195811444604020860); - correctResults.push_back(0.048262934352637205); - correctResults.push_back(0.048740046603877221); - correctResults.push_back(0.048262934352637205); + correctResults = {0.196291, 0.196291, 0.150276, 0.138258, 0.150276, 0.196291, 0.158764, + 0.13836, 0.158764, 0.196291, 0.126729, 0.070042, 0.053571, 0.070042, + 0.126729, 0.196291, 0.130237, 0.074786, 0.054869, 0.074786, 0.130237, + 0.196291, 0.060051, 0.006725, 0.012817, 0.006725, 0.060051, 0.196291, + 0.062692, 0.00811, 0.014968, 0.00811, 0.062692, 0.196291, 0.036972, + 0.04909, 0.036972, 0.196291, 0.046854, 0.046395, 0.046854}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp index c93638f9..24c4e58f 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp @@ -68,7 +68,7 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele std::shared_ptr>> aResults = aLayer->getWavelengthResults(); - size_t correctSize = 5; + size_t correctSize = 4; EXPECT_EQ(correctSize, aResults->size()); @@ -81,48 +81,12 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Test only diagonal of transmittance matrix size_t size = aT.size(); - std::vector correctResults; - correctResults.push_back(0.743897); - correctResults.push_back(0.801801); - correctResults.push_back(3.838654); - correctResults.push_back(5.096560); - correctResults.push_back(3.838654); - correctResults.push_back(0.801801); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.743310); - correctResults.push_back(5.194719); - correctResults.push_back(8.453376); - correctResults.push_back(9.646127); - correctResults.push_back(8.453376); - correctResults.push_back(5.194719); - correctResults.push_back(0.743310); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.743310); - correctResults.push_back(9.176180); - correctResults.push_back(10.644505); - correctResults.push_back(8.384925); - correctResults.push_back(10.644505); - correctResults.push_back(9.176180); - correctResults.push_back(0.743310); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.706601); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.706601); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); - correctResults.push_back(0.000000); + std::vector correctResults{ + 0.80234, 0.860244, 3.88367, 5.136014, 3.88367, 0.860244, 0.054423, 0.050166, 0.054423, + 0.801753, 5.231931, 8.475046, 9.662109, 8.475046, 5.231931, 0.801753, 0.049212, 0.042728, + 0.040355, 0.042728, 0.049212, 0.801753, 9.194403, 10.673049, 8.440885, 10.673049, 9.194403, + 0.801753, 0.04129, 0.035089, 0.033237, 0.035089, 0.04129, 0.765044, 0.121845, 0.104227, + 0.121845, 0.765044, 0.027267, 0.024246, 0.027267}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -133,49 +97,12 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Front reflectance auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); - correctResults.push_back(0); + correctResults = {0.148682, 0.148682, 0.114522, 0.100372, 0.114522, 0.148682, 0.16834, + 0.174328, 0.16834, 0.148682, 0.09467, 0.05513, 0.040658, 0.05513, + 0.09467, 0.148682, 0.175812, 0.185946, 0.189655, 0.185946, 0.175812, + 0.148682, 0.04636, 0.01122, 0.021997, 0.01122, 0.04636, 0.148682, + 0.188194, 0.198337, 0.201428, 0.198337, 0.188194, 0.148682, 0.0856, + 0.09856, 0.0856, 0.148682, 0.211514, 0.216673, 0.211514}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) @@ -192,49 +119,12 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Test only diagonal of transmittance matrix size = aT.size(); - correctResults.clear(); - - correctResults.push_back(0.802660); - correctResults.push_back(0.860564); - correctResults.push_back(3.883917); - correctResults.push_back(5.136230); - correctResults.push_back(3.883917); - correctResults.push_back(0.860564); - correctResults.push_back(0.054766); - correctResults.push_back(0.050509); - correctResults.push_back(0.054766); - correctResults.push_back(0.802074); - correctResults.push_back(5.232135); - correctResults.push_back(8.475165); - correctResults.push_back(9.662197); - correctResults.push_back(8.475165); - correctResults.push_back(5.232135); - correctResults.push_back(0.802074); - correctResults.push_back(0.049555); - correctResults.push_back(0.043063); - correctResults.push_back(0.040687); - correctResults.push_back(0.043063); - correctResults.push_back(0.049555); - correctResults.push_back(0.802074); - correctResults.push_back(9.194503); - correctResults.push_back(10.672994); - correctResults.push_back(8.440777); - correctResults.push_back(10.672994); - correctResults.push_back(9.194503); - correctResults.push_back(0.802074); - correctResults.push_back(0.041623); - correctResults.push_back(0.035407); - correctResults.push_back(0.033549); - correctResults.push_back(0.035407); - correctResults.push_back(0.041623); - correctResults.push_back(0.765364); - correctResults.push_back(0.121632); - correctResults.push_back(0.104072); - correctResults.push_back(0.121632); - correctResults.push_back(0.765364); - correctResults.push_back(0.027554); - correctResults.push_back(0.024517); - correctResults.push_back(0.027554); + correctResults = {0.822696, 0.8806, 3.899349, 5.149756, 3.899349, 0.8806, 0.076245, + 0.072118, 0.076245, 0.822109, 5.244892, 8.482594, 9.667675, 8.482594, + 5.244892, 0.822109, 0.071121, 0.06432, 0.061831, 0.06432, 0.071121, + 0.822109, 9.20075, 10.66946, 8.433849, 10.66946, 9.20075, 0.822109, + 0.062812, 0.055871, 0.053739, 0.055871, 0.062812, 0.7854, 0.107467, + 0.09322, 0.107467, 0.7854, 0.046481, 0.042637, 0.046481}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -245,49 +135,12 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Front reflectance aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - - correctResults.push_back(0.148393); - correctResults.push_back(0.148393); - correctResults.push_back(0.114299); - correctResults.push_back(0.100177); - correctResults.push_back(0.114299); - correctResults.push_back(0.148393); - correctResults.push_back(0.168002); - correctResults.push_back(0.173972); - correctResults.push_back(0.168002); - correctResults.push_back(0.148393); - correctResults.push_back(0.094486); - correctResults.push_back(0.055023); - correctResults.push_back(0.040579); - correctResults.push_back(0.055023); - correctResults.push_back(0.094486); - correctResults.push_back(0.148393); - correctResults.push_back(0.175452); - correctResults.push_back(0.185559); - correctResults.push_back(0.189259); - correctResults.push_back(0.185559); - correctResults.push_back(0.175452); - correctResults.push_back(0.148393); - correctResults.push_back(0.046270); - correctResults.push_back(0.011282); - correctResults.push_back(0.022117); - correctResults.push_back(0.011282); - correctResults.push_back(0.046270); - correctResults.push_back(0.148393); - correctResults.push_back(0.187801); - correctResults.push_back(0.197924); - correctResults.push_back(0.201009); - correctResults.push_back(0.197924); - correctResults.push_back(0.187801); - correctResults.push_back(0.148393); - correctResults.push_back(0.085962); - correctResults.push_back(0.098907); - correctResults.push_back(0.085962); - correctResults.push_back(0.148393); - correctResults.push_back(0.211083); - correctResults.push_back(0.216240); - correctResults.push_back(0.211083); + correctResults = {0.129988, 0.129988, 0.100123, 0.087752, 0.100123, 0.129988, 0.146686, + 0.151645, 0.146686, 0.129988, 0.082767, 0.048199, 0.035546, 0.048199, + 0.082767, 0.129988, 0.1529, 0.161474, 0.164612, 0.161474, 0.1529, + 0.129988, 0.040531, 0.015128, 0.029658, 0.015128, 0.040531, 0.129988, + 0.163375, 0.172244, 0.174984, 0.172244, 0.163375, 0.129988, 0.108043, + 0.120069, 0.108043, 0.129988, 0.184338, 0.189303, 0.184338}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) @@ -304,49 +157,12 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Test only diagonal of transmittance matrix size = aT.size(); - correctResults.clear(); - - correctResults.push_back(0.822696); - correctResults.push_back(0.880601); - correctResults.push_back(3.899350); - correctResults.push_back(5.149756); - correctResults.push_back(3.899350); - correctResults.push_back(0.880601); - correctResults.push_back(0.076246); - correctResults.push_back(0.072118); - correctResults.push_back(0.076246); - correctResults.push_back(0.822110); - correctResults.push_back(5.244893); - correctResults.push_back(8.482595); - correctResults.push_back(9.667676); - correctResults.push_back(8.482595); - correctResults.push_back(5.244893); - correctResults.push_back(0.822110); - correctResults.push_back(0.071121); - correctResults.push_back(0.064321); - correctResults.push_back(0.061831); - correctResults.push_back(0.064321); - correctResults.push_back(0.071121); - correctResults.push_back(0.822110); - correctResults.push_back(9.200750); - correctResults.push_back(10.669461); - correctResults.push_back(8.433850); - correctResults.push_back(10.669461); - correctResults.push_back(9.200750); - correctResults.push_back(0.822110); - correctResults.push_back(0.062812); - correctResults.push_back(0.055872); - correctResults.push_back(0.053740); - correctResults.push_back(0.055872); - correctResults.push_back(0.062812); - correctResults.push_back(0.785400); - correctResults.push_back(0.107468); - correctResults.push_back(0.093221); - correctResults.push_back(0.107468); - correctResults.push_back(0.785400); - correctResults.push_back(0.046481); - correctResults.push_back(0.042638); - correctResults.push_back(0.046481); + correctResults = {0.80234, 0.860244, 3.88367, 5.136014, 3.88367, 0.860244, 0.054423, + 0.050166, 0.054423, 0.801753, 5.231931, 8.475046, 9.662109, 8.475046, + 5.231931, 0.801753, 0.049212, 0.042728, 0.040355, 0.042728, 0.049212, + 0.801753, 9.194403, 10.673049, 8.440885, 10.673049, 9.194403, 0.801753, + 0.04129, 0.035089, 0.033237, 0.035089, 0.04129, 0.765044, 0.121845, + 0.104227, 0.121845, 0.765044, 0.027267, 0.024246, 0.027267}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -357,49 +173,12 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Front reflectance aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - - correctResults.push_back(0.129989); - correctResults.push_back(0.129989); - correctResults.push_back(0.100123); - correctResults.push_back(0.087753); - correctResults.push_back(0.100123); - correctResults.push_back(0.129989); - correctResults.push_back(0.146686); - correctResults.push_back(0.151646); - correctResults.push_back(0.146686); - correctResults.push_back(0.129989); - correctResults.push_back(0.082768); - correctResults.push_back(0.048199); - correctResults.push_back(0.035546); - correctResults.push_back(0.048199); - correctResults.push_back(0.082768); - correctResults.push_back(0.129989); - correctResults.push_back(0.152900); - correctResults.push_back(0.161474); - correctResults.push_back(0.164612); - correctResults.push_back(0.161474); - correctResults.push_back(0.152900); - correctResults.push_back(0.129989); - correctResults.push_back(0.040532); - correctResults.push_back(0.015128); - correctResults.push_back(0.029659); - correctResults.push_back(0.015128); - correctResults.push_back(0.040532); - correctResults.push_back(0.129989); - correctResults.push_back(0.163376); - correctResults.push_back(0.172244); - correctResults.push_back(0.174984); - correctResults.push_back(0.172244); - correctResults.push_back(0.163376); - correctResults.push_back(0.129989); - correctResults.push_back(0.108044); - correctResults.push_back(0.120070); - correctResults.push_back(0.108044); - correctResults.push_back(0.129989); - correctResults.push_back(0.184339); - correctResults.push_back(0.189304); - correctResults.push_back(0.184339); + correctResults = {0.148682, 0.148682, 0.114522, 0.100372, 0.114522, 0.148682, 0.16834, + 0.174328, 0.16834, 0.148682, 0.09467, 0.05513, 0.040658, 0.05513, + 0.09467, 0.148682, 0.175812, 0.185946, 0.189655, 0.185946, 0.175812, + 0.148682, 0.04636, 0.01122, 0.021997, 0.01122, 0.04636, 0.148682, + 0.188194, 0.198337, 0.201428, 0.198337, 0.188194, 0.148682, 0.0856, + 0.09856, 0.0856, 0.148682, 0.211514, 0.216673, 0.211514}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) @@ -416,49 +195,12 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Test only diagonal of transmittance matrix size = aT.size(); - correctResults.clear(); - - correctResults.push_back(0.802660); - correctResults.push_back(0.860564); - correctResults.push_back(3.883917); - correctResults.push_back(5.136230); - correctResults.push_back(3.883917); - correctResults.push_back(0.860564); - correctResults.push_back(0.054766); - correctResults.push_back(0.050509); - correctResults.push_back(0.054766); - correctResults.push_back(0.802074); - correctResults.push_back(5.232135); - correctResults.push_back(8.475165); - correctResults.push_back(9.662197); - correctResults.push_back(8.475165); - correctResults.push_back(5.232135); - correctResults.push_back(0.802074); - correctResults.push_back(0.049555); - correctResults.push_back(0.043063); - correctResults.push_back(0.040687); - correctResults.push_back(0.043063); - correctResults.push_back(0.049555); - correctResults.push_back(0.802074); - correctResults.push_back(9.194503); - correctResults.push_back(10.672994); - correctResults.push_back(8.440777); - correctResults.push_back(10.672994); - correctResults.push_back(9.194503); - correctResults.push_back(0.802074); - correctResults.push_back(0.041623); - correctResults.push_back(0.035407); - correctResults.push_back(0.033549); - correctResults.push_back(0.035407); - correctResults.push_back(0.041623); - correctResults.push_back(0.765364); - correctResults.push_back(0.121632); - correctResults.push_back(0.104072); - correctResults.push_back(0.121632); - correctResults.push_back(0.765364); - correctResults.push_back(0.027554); - correctResults.push_back(0.024517); - correctResults.push_back(0.027554); + correctResults = {0.80234, 0.860244, 3.88367, 5.136014, 3.88367, 0.860244, 0.054423, + 0.050166, 0.054423, 0.801753, 5.231931, 8.475046, 9.662109, 8.475046, + 5.231931, 0.801753, 0.049212, 0.042728, 0.040355, 0.042728, 0.049212, + 0.801753, 9.194403, 10.673049, 8.440885, 10.673049, 9.194403, 0.801753, + 0.04129, 0.035089, 0.033237, 0.035089, 0.04129, 0.765044, 0.121845, + 0.104227, 0.121845, 0.765044, 0.027267, 0.024246, 0.027267}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -469,49 +211,12 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Front reflectance aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - - correctResults.push_back(0.148393); - correctResults.push_back(0.148393); - correctResults.push_back(0.114299); - correctResults.push_back(0.100177); - correctResults.push_back(0.114299); - correctResults.push_back(0.148393); - correctResults.push_back(0.168002); - correctResults.push_back(0.173972); - correctResults.push_back(0.168002); - correctResults.push_back(0.148393); - correctResults.push_back(0.094486); - correctResults.push_back(0.055023); - correctResults.push_back(0.040579); - correctResults.push_back(0.055023); - correctResults.push_back(0.094486); - correctResults.push_back(0.148393); - correctResults.push_back(0.175452); - correctResults.push_back(0.185559); - correctResults.push_back(0.189259); - correctResults.push_back(0.185559); - correctResults.push_back(0.175452); - correctResults.push_back(0.148393); - correctResults.push_back(0.046270); - correctResults.push_back(0.011282); - correctResults.push_back(0.022117); - correctResults.push_back(0.011282); - correctResults.push_back(0.046270); - correctResults.push_back(0.148393); - correctResults.push_back(0.187801); - correctResults.push_back(0.197924); - correctResults.push_back(0.201009); - correctResults.push_back(0.197924); - correctResults.push_back(0.187801); - correctResults.push_back(0.148393); - correctResults.push_back(0.085962); - correctResults.push_back(0.098907); - correctResults.push_back(0.085962); - correctResults.push_back(0.148393); - correctResults.push_back(0.211083); - correctResults.push_back(0.216240); - correctResults.push_back(0.211083); + correctResults = {0.148682, 0.148682, 0.114522, 0.100372, 0.114522, 0.148682, 0.16834, + 0.174328, 0.16834, 0.148682, 0.09467, 0.05513, 0.040658, 0.05513, + 0.09467, 0.148682, 0.175812, 0.185946, 0.189655, 0.185946, 0.175812, + 0.148682, 0.04636, 0.01122, 0.021997, 0.01122, 0.04636, 0.148682, + 0.188194, 0.198337, 0.201428, 0.198337, 0.188194, 0.148682, 0.0856, + 0.09856, 0.0856, 0.148682, 0.211514, 0.216673, 0.211514}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) diff --git a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp index 99b89cae..310a0c14 100644 --- a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp @@ -57,7 +57,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) std::shared_ptr>> aResults = aLayer->getWavelengthResults(); - size_t correctSize = 4; + size_t correctSize = 3; EXPECT_EQ(correctSize, aResults->size()); @@ -72,12 +72,12 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) // Test only diagonal of transmittance matrix size_t size = aT.size(); - correctResults = {5.780996, 6.070652, 6.069898, 6.054181, 6.069898, 6.070652, 6.069898, - 6.054181, 6.069898, 5.094622, 5.119753, 4.995444, 4.78271, 4.995444, - 5.119753, 5.094622, 5.119753, 4.995444, 4.78271, 4.995444, 5.119753, - 3.750925, 3.93978, 3.350183, 1.31059, 3.350183, 3.93978, 3.750925, - 3.93978, 3.350183, 1.31059, 3.350183, 3.93978, 0, 0, - 0, 0, 0, 0, 0, 0}; + correctResults = {5.786283, 6.076508, 6.075762, 6.060038, 6.075762, 6.076508, 6.075762, + 6.060038, 6.075762, 5.1071, 5.132581, 5.008355, 4.795191, 5.008355, + 5.132581, 5.1071, 5.132581, 5.008355, 4.795191, 5.008355, 5.132581, + 3.786365, 3.977287, 3.388986, 1.346054, 3.388986, 3.977287, 3.786365, + 3.977287, 3.388986, 1.346054, 3.388986, 3.977287, 0.03677, 0.013011, + 0.03677, 0.013011, 0.03677, 0.013011, 0.03677, 0.013011}; EXPECT_EQ(correctResults.size(), aT.size()); @@ -89,10 +89,15 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) // Front reflectance auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); - correctResults = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + correctResults = {0.136184, 0.138526, 0.138533, 0.138825, 0.138533, 0.138526, 0.138533, + 0.138825, 0.138533, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, + 0.14151, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, 0.14151, + 0.145716, 0.139948, 0.150205, 0.193505, 0.150205, 0.139948, 0.145716, + 0.139948, 0.150205, 0.193505, 0.150205, 0.139948, 0.217877, 0.241636, + 0.217877, 0.241636, 0.217877, 0.241636, 0.217877, 0.241636}; EXPECT_EQ(correctResults.size(), aRf.size()); + for(size_t i = 0; i < size; ++i) { EXPECT_NEAR(correctResults[i], aRf(i, i), 1e-5); @@ -107,44 +112,6 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) // Test only diagonal of transmittance matrix size = aT.size(); - correctResults = {5.786856, 6.077092, 6.076345, 6.060622, 6.076345, 6.077092, 6.076345, - 6.060622, 6.076345, 5.107699, 5.133175, 5.00896, 4.795816, 5.00896, - 5.133175, 5.107699, 5.133175, 5.00896, 4.795816, 5.00896, 5.133175, - 3.786973, 3.977869, 3.389612, 1.346872, 3.389612, 3.977869, 3.786973, - 3.977869, 3.389612, 1.346872, 3.389612, 3.977869, 0.037705, 0.014065, - 0.037705, 0.014065, 0.037705, 0.014065, 0.037705, 0.014065}; - - EXPECT_EQ(correctResults.size(), aT.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aT(i, i), 1e-5); - } - - // Front reflectance - aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); - - correctResults = {0.13561, 0.137943, 0.137949, 0.138241, 0.137949, 0.137943, 0.137949, - 0.138241, 0.137949, 0.141753, 0.140915, 0.143256, 0.147834, 0.143256, - 0.140915, 0.141753, 0.140915, 0.143256, 0.147834, 0.143256, 0.140915, - 0.145108, 0.139366, 0.149578, 0.192687, 0.149578, 0.139366, 0.145108, - 0.139366, 0.149578, 0.192687, 0.149578, 0.139366, 0.216942, 0.240582, - 0.216942, 0.240582, 0.216942, 0.240582, 0.216942, 0.240582}; - - EXPECT_EQ(correctResults.size(), aRf.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aRf(i, i), 1e-5); - } - - /////////////////////////////////////////////////////////////////////// - // Wavelength number 3 - /////////////////////////////////////////////////////////////////////// - - aT = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::T); - - // Test only diagonal of transmittance matrix - size = aT.size(); - correctResults = {5.819182, 6.109986, 6.109241, 6.09359, 6.109241, 6.109986, 6.109241, 6.09359, 6.109241, 5.141467, 5.166734, 5.043095, 4.831082, 5.043095, 5.166734, 5.141467, 5.166734, 5.043095, 4.831082, 5.043095, 5.166734, @@ -153,13 +120,14 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) 0.090127, 0.072878, 0.090127, 0.072878, 0.090127, 0.072878}; EXPECT_EQ(correctResults.size(), aT.size()); + for(size_t i = 0; i < size; ++i) { EXPECT_NEAR(correctResults[i], aT(i, i), 1e-5); } // Front reflectance - aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); + aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); correctResults = {0.103285, 0.105049, 0.105053, 0.105273, 0.105053, 0.105049, 0.105053, 0.105273, 0.105053, 0.107984, 0.107356, 0.109122, 0.112568, 0.109122, @@ -169,26 +137,27 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) 0.16452, 0.181769, 0.16452, 0.181769, 0.16452, 0.181769}; EXPECT_EQ(correctResults.size(), aRf.size()); + for(size_t i = 0; i < size; ++i) { EXPECT_NEAR(correctResults[i], aRf(i, i), 1e-5); } /////////////////////////////////////////////////////////////////////// - // Wavelength number 4 + // Wavelength number 3 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); + aT = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); - correctResults = {5.786856, 6.077092, 6.076345, 6.060622, 6.076345, 6.077092, 6.076345, - 6.060622, 6.076345, 5.107699, 5.133175, 5.00896, 4.795816, 5.00896, - 5.133175, 5.107699, 5.133175, 5.00896, 4.795816, 5.00896, 5.133175, - 3.786973, 3.977869, 3.389612, 1.346872, 3.389612, 3.977869, 3.786973, - 3.977869, 3.389612, 1.346872, 3.389612, 3.977869, 0.037705, 0.014065, - 0.037705, 0.014065, 0.037705, 0.014065, 0.037705, 0.014065}; + correctResults = {5.786283, 6.076508, 6.075762, 6.060038, 6.075762, 6.076508, 6.075762, + 6.060038, 6.075762, 5.1071, 5.132581, 5.008355, 4.795191, 5.008355, + 5.132581, 5.1071, 5.132581, 5.008355, 4.795191, 5.008355, 5.132581, + 3.786365, 3.977287, 3.388986, 1.346054, 3.388986, 3.977287, 3.786365, + 3.977287, 3.388986, 1.346054, 3.388986, 3.977287, 0.03677, 0.013011, + 0.03677, 0.013011, 0.03677, 0.013011, 0.03677, 0.013011}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -197,14 +166,14 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) } // Front reflectance - aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); - - correctResults = {0.13561, 0.137943, 0.137949, 0.138241, 0.137949, 0.137943, 0.137949, - 0.138241, 0.137949, 0.141753, 0.140915, 0.143256, 0.147834, 0.143256, - 0.140915, 0.141753, 0.140915, 0.143256, 0.147834, 0.143256, 0.140915, - 0.145108, 0.139366, 0.149578, 0.192687, 0.149578, 0.139366, 0.145108, - 0.139366, 0.149578, 0.192687, 0.149578, 0.139366, 0.216942, 0.240582, - 0.216942, 0.240582, 0.216942, 0.240582, 0.216942, 0.240582}; + aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); + + correctResults = {0.136184, 0.138526, 0.138533, 0.138825, 0.138533, 0.138526, 0.138533, + 0.138825, 0.138533, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, + 0.14151, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, 0.14151, + 0.145716, 0.139948, 0.150205, 0.193505, 0.150205, 0.139948, 0.145716, + 0.139948, 0.150205, 0.193505, 0.150205, 0.139948, 0.217877, 0.241636, + 0.217877, 0.241636, 0.217877, 0.241636, 0.217877, 0.241636}; EXPECT_EQ(correctResults.size(), aRf.size()); for(size_t i = 0; i < size; ++i) From ef041113f9419043c5bb5dc68a365ea761f01f87 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Mon, 25 Jul 2022 13:40:36 -0700 Subject: [PATCH 07/81] Update to single layer unit tests to reflect dual band material changes. --- src/Common/tst/units/WavelengthRange.unit.cpp | 34 +++++----- .../tst/units/BSDFMaterialDualBand.unit.cpp | 4 +- ...larPerforatedShadeMultiWavelength.unit.cpp | 64 ++++++++++++++++++- ...DoubleRangeMaterialSolarRadiation.unit.cpp | 2 +- .../units/WovenShadeMultiWavelength.unit.cpp | 50 ++++++++++++++- 5 files changed, 133 insertions(+), 21 deletions(-) diff --git a/src/Common/tst/units/WavelengthRange.unit.cpp b/src/Common/tst/units/WavelengthRange.unit.cpp index e7ae47ff..cda2818d 100644 --- a/src/Common/tst/units/WavelengthRange.unit.cpp +++ b/src/Common/tst/units/WavelengthRange.unit.cpp @@ -53,23 +53,23 @@ TEST_F(WavelengthRangeTest, TestCondensedSpectrum) const auto condensendSpectrum = FenestrationCommon::generateSpectrum(numOfVisibleBands, numOfIRBands); - std::vector correctSpectrum{0.3, - 0.38, - 0.46, - 0.54, - 0.62, - 0.7, - 0.78, - 0.952, - 1.124, - 1.296, - 1.468, - 1.64, - 1.812, - 1.984, - 2.156, - 2.328, - 2.5}; + const std::vector correctSpectrum{0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; EXPECT_EQ(condensendSpectrum.size(), correctSpectrum.size()); for(size_t i = 0u; i < condensendSpectrum.size(); ++i) diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp index 242a4700..4d140c98 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp @@ -148,7 +148,9 @@ TEST_F(TestBSDFMaterialDualBand, TestProperties) // for each of the calculated wavelength bands. auto bandProperties = m_Material->getBandProperties(Property::T, Side::Front, incomingDirection, outgoingDirection); - std::vector expectedBandProperties{0.121977, 0.0416186, 0.121977}; + std::vector expectedBandProperties{0.121977, 0.0416186, 0.121977, 0.121977}; + + EXPECT_EQ(bandProperties.size(), expectedBandProperties.size()); for(size_t i = 0u; i < expectedBandProperties.size(); ++i) { EXPECT_NEAR(expectedBandProperties[i], bandProperties[i], 1e-6); diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp index 53de1f8b..fc363ff2 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp @@ -61,7 +61,17 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa std::shared_ptr>> aResults = aLayer->getWavelengthResults(); - size_t correctSize = 3; + const auto wavelengths{aLayer->getBandWavelengths()}; + const std::vector correctWavelengths{0.3, 0.38, 0.780002, 2.5}; + + EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); + + for(size_t i =0u; i < correctWavelengths.size(); ++i) + { + EXPECT_NEAR(wavelengths[i], correctWavelengths[i], 1e-6); + } + + size_t correctSize = correctWavelengths.size(); EXPECT_EQ(correctSize, aResults->size()); @@ -216,4 +226,56 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa { EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); } + + /////////////////////////////////////////////////////////////////////// + // Wavelength number 4 + /////////////////////////////////////////////////////////////////////// + + aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); + + // Test only diagonal of transmittance matrix + size = aT.size(); + + calculatedResults.clear(); + + correctResults = { + 3.324467, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, + 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, + 2.599524, 2.599524, 2.599524, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, + 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 0.001248, 0.001248, 0.001248, + 0.001248, 0.001248, 0.001248, 0.001248, 0.001248}; + + for(size_t i = 0; i < size; ++i) + { + calculatedResults.push_back(aT(i, i)); + } + + EXPECT_EQ(correctResults.size(), calculatedResults.size()); + for(size_t i = 0; i < size; ++i) + { + EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); + } + + // Front reflectance + aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); + + calculatedResults.clear(); + + correctResults = {0.188652, 0.194951, 0.194951, 0.194951, 0.194951, 0.194951, 0.194951, + 0.194951, 0.194951, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, + 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, 0.202737, + 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, + 0.215334, 0.215334, 0.215334, 0.215334, 0.215334, 0.253400, 0.253400, + 0.253400, 0.253400, 0.253400, 0.253400, 0.253400, 0.253400}; + + for(size_t i = 0; i < size; ++i) + { + calculatedResults.push_back(aRf(i, i)); + } + + EXPECT_EQ(correctResults.size(), calculatedResults.size()); + for(size_t i = 0; i < size; ++i) + { + EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); + } } diff --git a/src/SingleLayerOptics/tst/units/DoubleRangeMaterialSolarRadiation.unit.cpp b/src/SingleLayerOptics/tst/units/DoubleRangeMaterialSolarRadiation.unit.cpp index 5c885fff..28818f42 100644 --- a/src/SingleLayerOptics/tst/units/DoubleRangeMaterialSolarRadiation.unit.cpp +++ b/src/SingleLayerOptics/tst/units/DoubleRangeMaterialSolarRadiation.unit.cpp @@ -92,7 +92,7 @@ TEST_F(TestDoubleRangeMaterialSolarRadiation, TestMaterialProperties) EXPECT_NEAR(0.7, R, 1e-6); const auto wavelengths{aMaterial->getBandWavelengths()}; - const std::vector correctWavelengths{0.3, 0.38, 0.78}; + const std::vector correctWavelengths{0.3, 0.38, 0.780002, 2.5}; EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); diff --git a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp index 310a0c14..573f05c1 100644 --- a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp @@ -57,7 +57,17 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) std::shared_ptr>> aResults = aLayer->getWavelengthResults(); - size_t correctSize = 3; + const auto wavelengths{aLayer->getBandWavelengths()}; + const std::vector correctWavelengths{0.3, 0.38, 0.780002, 2.5}; + + EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); + + for(size_t i =0u; i < correctWavelengths.size(); ++i) + { + EXPECT_NEAR(wavelengths[i], correctWavelengths[i], 1e-6); + } + + size_t correctSize = correctWavelengths.size(); EXPECT_EQ(correctSize, aResults->size()); @@ -180,4 +190,42 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) { EXPECT_NEAR(correctResults[i], aRf(i, i), 1e-5); } + + /////////////////////////////////////////////////////////////////////// + // Wavelength number 4 + /////////////////////////////////////////////////////////////////////// + + aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); + + // Test only diagonal of transmittance matrix + size = aT.size(); + + correctResults = {5.786283, 6.076508, 6.075762, 6.060038, 6.075762, 6.076508, 6.075762, + 6.060038, 6.075762, 5.1071, 5.132581, 5.008355, 4.795191, 5.008355, + 5.132581, 5.1071, 5.132581, 5.008355, 4.795191, 5.008355, 5.132581, + 3.786365, 3.977287, 3.388986, 1.346054, 3.388986, 3.977287, 3.786365, + 3.977287, 3.388986, 1.346054, 3.388986, 3.977287, 0.03677, 0.013011, + 0.03677, 0.013011, 0.03677, 0.013011, 0.03677, 0.013011}; + + EXPECT_EQ(correctResults.size(), aT.size()); + for(size_t i = 0; i < size; ++i) + { + EXPECT_NEAR(correctResults[i], aT(i, i), 1e-5); + } + + // Front reflectance + aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); + + correctResults = {0.136184, 0.138526, 0.138533, 0.138825, 0.138533, 0.138526, 0.138533, + 0.138825, 0.138533, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, + 0.14151, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, 0.14151, + 0.145716, 0.139948, 0.150205, 0.193505, 0.150205, 0.139948, 0.145716, + 0.139948, 0.150205, 0.193505, 0.150205, 0.139948, 0.217877, 0.241636, + 0.217877, 0.241636, 0.217877, 0.241636, 0.217877, 0.241636}; + + EXPECT_EQ(correctResults.size(), aRf.size()); + for(size_t i = 0; i < size; ++i) + { + EXPECT_NEAR(correctResults[i], aRf(i, i), 1e-5); + } } From 9d8b06199b2c0b813649f83494045d686457a6ae Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Tue, 26 Jul 2022 15:44:54 -0700 Subject: [PATCH 08/81] Update to unit test result that changed due to 0.3 to 0.32 wavelenghts update. --- src/Common/tst/units/WavelengthRange.unit.cpp | 4 +- .../MultiPaneBSDF_102_BSDFMaterial.unit.cpp | 30 +-- ...aneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 65 ++++-- ...iPaneBSDF_102_PerfectDiffuseSolar.unit.cpp | 34 +-- ...tiPaneBSDF_102_PerforatedCircular.unit.cpp | 32 +-- ...aneBSDF_102_PerforatedRectangular.unit.cpp | 32 +-- ...iPaneBSDF_102_VenetianDirectional.unit.cpp | 32 +-- ...MultiPaneBSDF_102_VenetianUniform.unit.cpp | 32 +-- .../units/MultiPaneBSDF_102_Woven.unit.cpp | 32 +-- ...SDFMaterialDualBandCondensedRange.unit.cpp | 221 ++++++++++++++++++ ...bleRangeMaterialCondensedSpectrum.unit.cpp | 159 +++++++++++++ 11 files changed, 535 insertions(+), 138 deletions(-) create mode 100644 src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp create mode 100644 src/SingleLayerOptics/tst/units/DoubleRangeMaterialCondensedSpectrum.unit.cpp diff --git a/src/Common/tst/units/WavelengthRange.unit.cpp b/src/Common/tst/units/WavelengthRange.unit.cpp index cda2818d..4acc0544 100644 --- a/src/Common/tst/units/WavelengthRange.unit.cpp +++ b/src/Common/tst/units/WavelengthRange.unit.cpp @@ -40,7 +40,7 @@ TEST_F(WavelengthRangeTest, Test3) CWavelengthRange aRange = CWavelengthRange(WavelengthRange::Visible); EXPECT_NEAR(0.38, aRange.minLambda(), 1e-6); - EXPECT_NEAR(0.78, aRange.maxLambda(), 1e-6); + EXPECT_NEAR(0.780002, aRange.maxLambda(), 1e-6); } TEST_F(WavelengthRangeTest, TestCondensedSpectrum) @@ -74,7 +74,7 @@ TEST_F(WavelengthRangeTest, TestCondensedSpectrum) EXPECT_EQ(condensendSpectrum.size(), correctSpectrum.size()); for(size_t i = 0u; i < condensendSpectrum.size(); ++i) { - EXPECT_NEAR(condensendSpectrum[i], correctSpectrum[i], 1e-6); + EXPECT_NEAR(condensendSpectrum[i], correctSpectrum[i], 1e-5); } } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp index 73468c58..c974c26c 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp @@ -210,55 +210,55 @@ TEST_F(MultiPaneBSDF_102_BSDFMaterial, TestBSDFMatrixAsInput) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.062234, tauDiff, 1e-6); + EXPECT_NEAR(0.058609, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.488707, rhoDiff, 1e-6); + EXPECT_NEAR(0.444385, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.068316, absDiff1, 1e-6); + EXPECT_NEAR(0.138513, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.380742, absDiff2, 1e-6); + EXPECT_NEAR(0.358492, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.138444, tauHem, 1e-6); + EXPECT_NEAR(0.131689, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.0717220, tauDir, 1e-6); + EXPECT_NEAR(0.068362, tauDir, 1e-6); double rhoFrontHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.446176, rhoFrontHem, 1e-6); + EXPECT_NEAR(0.403499, rhoFrontHem, 1e-6); double rhoBackHem = aLayer.DirHem(minLambda, maxLambda, Side::Back, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.545938, rhoBackHem, 1e-6); + EXPECT_NEAR(0.546234, rhoBackHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.085572, rhoDir, 1e-6); + EXPECT_NEAR(0.079319, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.065461, abs1, 1e-6); + EXPECT_NEAR(0.133011, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.349919, abs2, 1e-6); + EXPECT_NEAR(0.331802, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.066740, tauHem, 1e-6); + EXPECT_NEAR(0.063015, tauHem, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.448931, rhoHem, 1e-6); + EXPECT_NEAR(0.404596, rhoHem, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.068987, abs1, 1e-6); + EXPECT_NEAR(0.140223, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.415341, abs2, 1e-6); + EXPECT_NEAR(0.392165, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index 19e2b7aa..d02ac915 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -6,11 +6,11 @@ #include "WCESingleLayerOptics.hpp" #include "WCECommon.hpp" +// Example of predefined XML layer -using namespace SingleLayerOptics; -using namespace FenestrationCommon; -using namespace SpectralAveraging; -using namespace MultiLayerOptics; +using MultiLayerOptics::CMultiPaneBSDF; +using FenestrationCommon::CSeries; +using SpectralAveraging::CSpectralSampleData; class MultiPaneBSDF_102_BSDFMaterial_2011_SA1 : public testing::Test { @@ -1330,6 +1330,10 @@ return { protected: virtual void SetUp() { + using FenestrationCommon::MaterialType; + using FenestrationCommon::WavelengthRange; + using SingleLayerOptics::CBSDFHemisphere; + const auto numberOfVisibleBands{5u}; const auto numberOfIRBands{10u}; auto condensedSpectrum{ @@ -1342,7 +1346,7 @@ return { aMaterial_102->setBandWavelengths(condensedSpectrum); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = CBSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Full); auto tfSolar = TransmittanceFrontSolar(); auto tbSolar = TransmittanceBackSolar(); auto rfSolar = ReflectanceFrontSolar(); @@ -1353,7 +1357,7 @@ return { auto rbVisible = ReflectanceBackVisible(); auto nirRatio{0.499}; - const auto aBSDFMaterial = Material::dualBandBSDFMaterial(tfSolar, + const auto aBSDFMaterial = SingleLayerOptics::Material::dualBandBSDFMaterial(tfSolar, tbSolar, rfSolar, rbSolar, @@ -1366,9 +1370,8 @@ return { aBSDFMaterial->setBandWavelengths(condensedSpectrum); - auto Layer_Glass = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); - Layer_Glass->setBandWavelengths(condensedSpectrum); - auto Layer_BSDF = CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); + auto Layer_Glass = SingleLayerOptics::CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); + auto Layer_BSDF = SingleLayerOptics::CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); m_Layer = CMultiPaneBSDF::create({Layer_Glass, Layer_BSDF}, loadSolarRadiationFile()); } @@ -1383,6 +1386,10 @@ return { TEST_F(MultiPaneBSDF_102_BSDFMaterial_2011_SA1, TestBSDFMatrixAsInput) { + using FenestrationCommon::Side; + using FenestrationCommon::PropertySimple; + using FenestrationCommon::ScatteringSimple; + SCOPED_TRACE("Begin Test: Specular layer - BSDF."); const double minLambda = 0.3; @@ -1394,20 +1401,30 @@ TEST_F(MultiPaneBSDF_102_BSDFMaterial_2011_SA1, TestBSDFMatrixAsInput) double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.103154, tauHem, 1e-6); + EXPECT_NEAR(0.104287, tauHem, 1e-6); + + double rhoFrontHem = + aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.405182, rhoFrontHem, 1e-6); + + double rhoBackHem = + aLayer.DirHem(minLambda, maxLambda, Side::Back, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.527871, rhoBackHem, 1e-6); + + double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); + EXPECT_NEAR(0.116106, abs1, 1e-6); + + double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); + EXPECT_NEAR(0.374426, abs2, 1e-6); + + auto absHeatDirect = aLayer.getAbsorptanceLayersHeat( + minLambda, maxLambda, Side::Front, ScatteringSimple::Direct, 0, 0); + EXPECT_NEAR(0.116106, absHeatDirect[0], 1e-6); + EXPECT_NEAR(0.374426, absHeatDirect[1], 1e-6); + + auto absHeatDiffuse = aLayer.getAbsorptanceLayersHeat( + minLambda, maxLambda, Side::Front, ScatteringSimple::Diffuse, 0, 0); + EXPECT_NEAR(0.124832, absHeatDiffuse[0], 1e-6); + EXPECT_NEAR(0.313837, absHeatDiffuse[1], 1e-6); - //double rhoFrontHem = - // aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - //EXPECT_NEAR(0.40537985378849184, rhoFrontHem, 1e-6); - // - //double rhoBackHem = - // aLayer.DirHem(minLambda, maxLambda, Side::Back, PropertySimple::R, theta, phi); - //EXPECT_NEAR(0.52845227432122244, rhoBackHem, 1e-6); - // - //double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - //EXPECT_NEAR(0.11614336750923809, abs1, 1e-6); - // - //auto absHeat1 = aLayer.getAbsorptanceLayersHeat( - // minLambda, maxLambda, Side::Front, ScatteringSimple::Diffuse, 0, 0); - //EXPECT_NEAR(0.12486670301018926, absHeat1[0], 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp index 77f28c2d..bec83531 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp @@ -173,60 +173,60 @@ TEST_F(MultiPaneBSDF_102_PerfectDiffuseSolar, TestPerfectDiffuseBSDFSolar) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.38807281612852856, tauDiff, 1e-6); + EXPECT_NEAR(0.386326, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.3192864301871256, rhoDiff, 1e-6); + EXPECT_NEAR(0.318008, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.12779473542404929, absDiff1, 1e-6); + EXPECT_NEAR(0.127629, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.16484601826029638, absDiff2, 1e-6); + EXPECT_NEAR(0.168036, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.43205231351437434, tauHem, 1e-6); + EXPECT_NEAR(0.430114, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.0055367364023813257, tauDir, 1e-6); + EXPECT_NEAR(0.005512, tauDir, 1e-6); double tauDirDiff = aLayer.DirDiff(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.42651557711199301, tauDirDiff, 1e-6); + EXPECT_NEAR(0.424602, tauDirDiff, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.26522929024908287, rhoHem, 1e-6); + EXPECT_NEAR(0.263809, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.077483327932538468, rhoDir, 1e-6); + EXPECT_NEAR(0.077463, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.12104831993041673, abs1, 1e-6); + EXPECT_NEAR(0.120867, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.18167007630612608, abs2, 1e-6); + EXPECT_NEAR(0.185211, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.42378838941894764, tauHem, 1e-6); + EXPECT_NEAR(0.421882, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.093248419848833711, tauDir, 1e-6); + EXPECT_NEAR(0.092829, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.26832230792664158, rhoHem, 1e-6); + EXPECT_NEAR(0.266927, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.12643072493011953, rhoDir, 1e-6); + EXPECT_NEAR(0.126096, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.1285067589657867, abs1, 1e-6); + EXPECT_NEAR(0.128327, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.17938254368862436, abs2, 1e-6); + EXPECT_NEAR(0.182864, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp index b9d6d853..9ad4103a 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp @@ -175,56 +175,56 @@ TEST_F(MultiPaneBSDF_102_Perforated, Test102PerofratedCircular) CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.186382, tauDiff, 1e-6); + EXPECT_NEAR(0.106832, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.570246, rhoDiff, 1e-6); + EXPECT_NEAR(0.571404, rhoDiff, 1e-6); const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.073493, absDiff1, 1e-6); + EXPECT_NEAR(0.159854, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.169879, absDiff2, 1e-6); + EXPECT_NEAR(0.161909, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.247748, tauHem, 1e-6); + EXPECT_NEAR(0.162518, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.080595, tauDir, 1e-6); + EXPECT_NEAR(0.075026, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.505653, rhoHem, 1e-6); + EXPECT_NEAR(0.514337, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.092142, rhoDir, 1e-6); + EXPECT_NEAR(0.086856, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.069676, abs1, 1e-6); + EXPECT_NEAR(0.153119, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.176923, abs2, 1e-6); + EXPECT_NEAR(0.170026, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.211489, tauHem, 1e-6); + EXPECT_NEAR(0.124489, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.036757, tauDir, 1e-6); + EXPECT_NEAR(0.033017, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.529687, rhoHem, 1e-6); + EXPECT_NEAR(0.536386, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.0975424, rhoDir, 1e-6); + EXPECT_NEAR(0.091732, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.0740038, abs1, 1e-6); + EXPECT_NEAR(0.162296, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.1848202, abs2, 1e-6); + EXPECT_NEAR(0.176829, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp index d8c4c5cd..e0a45812 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp @@ -171,56 +171,56 @@ TEST_F(MultiPaneBSDF_102_PerforatedRectangular, Test102PerofratedRectangular) CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.17999332644700258, tauDiff, 1e-6); + EXPECT_NEAR(0.099700, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.57392210891390338, rhoDiff, 1e-6); + EXPECT_NEAR(0.575668, rhoDiff, 1e-6); const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.073696500684976518, absDiff1, 1e-6); + EXPECT_NEAR(0.160336, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.17238806395411768, absDiff2, 1e-6); + EXPECT_NEAR(0.164296, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.23418469601834779, tauHem, 1e-6); + EXPECT_NEAR(0.148293, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.062517658868330939, tauDir, 1e-6); + EXPECT_NEAR(0.058635, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.51579390131209146, rhoHem, 1e-6); + EXPECT_NEAR(0.524779, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.086749626373709463, rhoDir, 1e-6); + EXPECT_NEAR(0.081228, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.070052238929002544, abs1, 1e-6); + EXPECT_NEAR(0.154011, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.17996916374055844, abs2, 1e-6); + EXPECT_NEAR(0.172916, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.19337670147431438, tauHem, 1e-6); + EXPECT_NEAR(0.105820, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.051361958942796958, tauDir, 1e-6); + EXPECT_NEAR(0.031640, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.5433569499333909, rhoHem, 1e-6); + EXPECT_NEAR(0.549825, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.19697934462774686, rhoDir, 1e-6); + EXPECT_NEAR(0.194053, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.074964865401038874, abs1, 1e-6); + EXPECT_NEAR(0.164372, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.18830148319125592, abs2, 1e-6); + EXPECT_NEAR(0.179984, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp index 0f1ef96f..c19939cf 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp @@ -180,56 +180,56 @@ TEST_F(MultiPaneBSDF_102_VenetianDirectional, TestBSDF1) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.25353652663370091, tauDiff, 1e-6); + EXPECT_NEAR(0.253442, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.49696272535662162, rhoDiff, 1e-6); + EXPECT_NEAR(0.497054, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.14753124972135961, absDiff1, 1e-6); + EXPECT_NEAR(0.147572, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.10196949828831804, absDiff2, 1e-6); + EXPECT_NEAR(0.101932, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.28141355347239544, tauHem, 1e-6); + EXPECT_NEAR(0.281306, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.050653646916034793, tauDir, 1e-6); + EXPECT_NEAR(0.050652, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.46219637377766787, rhoHem, 1e-6); + EXPECT_NEAR(0.462300, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.080333091956567071, rhoDir, 1e-6); + EXPECT_NEAR(0.080335, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.14313463022255959, abs1, 1e-6); + EXPECT_NEAR(0.143183, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.11325544252737706, abs2, 1e-6); + EXPECT_NEAR(0.113210, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.27657805719518286, tauHem, 1e-6); + EXPECT_NEAR(0.276474, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.09695869989600947, tauDir, 1e-6); + EXPECT_NEAR(0.096936, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.46206209177579532, rhoHem, 1e-6); + EXPECT_NEAR(0.462162, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.17295543245589531, rhoDir, 1e-6); + EXPECT_NEAR(0.172980, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.15009863785728955, abs1, 1e-6); + EXPECT_NEAR(0.150144, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.11126121317173215, abs2, 1e-6); + EXPECT_NEAR(0.111219, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp index 0b509324..6abb9e66 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp @@ -178,56 +178,56 @@ TEST_F(MultiPaneBSDF_102_VenetianUniform, TestVenetianUniformBSDF) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.22044984103947185, tauDiff, 1e-6); + EXPECT_NEAR(0.220369, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.41158183727109976, rhoDiff, 1e-6); + EXPECT_NEAR(0.411629, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.13582636719382288, absDiff1, 1e-6); + EXPECT_NEAR(0.135850, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.2321419544956056, absDiff2, 1e-6); + EXPECT_NEAR(0.232152, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.24471657269269853, tauHem, 1e-6); + EXPECT_NEAR(0.244624, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.050190192023128848, tauDir, 1e-6); + EXPECT_NEAR(0.050189, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.36728174755231324, rhoHem, 1e-6); + EXPECT_NEAR(0.367336, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.078980796476087287, rhoDir, 1e-6); + EXPECT_NEAR(0.078981, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.13001791228333437, abs1, 1e-6); + EXPECT_NEAR(0.130046, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.25798376747165375, abs2, 1e-6); + EXPECT_NEAR(0.257994, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.24049386705571757, tauHem, 1e-6); + EXPECT_NEAR(0.240404, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.08912320786272572, tauDir, 1e-6); + EXPECT_NEAR(0.089103, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.36887101083444412, rhoHem, 1e-6); + EXPECT_NEAR(0.368923, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.15057408656359189, rhoDir, 1e-6); + EXPECT_NEAR(0.150587, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.13728835649372989, abs1, 1e-6); + EXPECT_NEAR(0.137314, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.25334676561610853, abs2, 1e-6); + EXPECT_NEAR(0.253358, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp index f1b03f89..779bb567 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp @@ -167,56 +167,56 @@ TEST_F(MultiPaneBSDF_102_Woven, TestWovenShade) CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.3990192810206396, tauDiff, 1e-6); + EXPECT_NEAR(0.336759, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.41750332172018745, rhoDiff, 1e-6); + EXPECT_NEAR(0.412744, rhoDiff, 1e-6); const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.06455862754160531, absDiff1, 1e-6); + EXPECT_NEAR(0.137561, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.11891972102082352, absDiff2, 1e-6); + EXPECT_NEAR(0.112936, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.50922044448075099, tauHem, 1e-6); + EXPECT_NEAR(0.445302, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.39179277949721175, tauDir, 1e-6); + EXPECT_NEAR(0.372486, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.32601498664477391, rhoHem, 1e-6); + EXPECT_NEAR(0.326722, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.087265389988163994, rhoDir, 1e-6); + EXPECT_NEAR(0.081716, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.059093817378499058, abs1, 1e-6); + EXPECT_NEAR(0.126611, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.10567167724208894, abs2, 1e-6); + EXPECT_NEAR(0.101365, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.46727264309012495, tauHem, 1e-6); + EXPECT_NEAR(0.400527, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.32250525796745066, tauDir, 1e-6); + EXPECT_NEAR(0.305015, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.35055476510173295, rhoHem, 1e-6); + EXPECT_NEAR(0.350088, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.09272177650062878, rhoDir, 1e-6); + EXPECT_NEAR(0.086697, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.063506109166395583, abs1, 1e-6); + EXPECT_NEAR(0.136082, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.11866747489413, abs2, 1e-6); + EXPECT_NEAR(0.113302, abs2, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp new file mode 100644 index 00000000..1e936818 --- /dev/null +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp @@ -0,0 +1,221 @@ +#include +#include + +#include + +#include "WCESpectralAveraging.hpp" +#include "WCESingleLayerOptics.hpp" +#include "WCECommon.hpp" + +using SingleLayerOptics::CBSDFHemisphere; +using SingleLayerOptics::BSDFBasis; +using SingleLayerOptics::CMaterialSingleBandBSDF; +using SingleLayerOptics::CMaterialDualBandBSDF; +using SingleLayerOptics::BSDFDirection; +using SingleLayerOptics::CBeamDirection; + +class TestBSDFMaterialDualBandCondensedRange : public testing::Test +{ +public: + CBSDFHemisphere m_Hemisphere{CBSDFHemisphere::create(BSDFBasis::Small)}; + std::shared_ptr m_MaterialVis; + std::shared_ptr m_MaterialSol; + std::shared_ptr m_Material; + std::vector> m_TfVis; + std::vector> m_TbVis; + std::vector> m_RfVis; + std::vector> m_RbVis; + std::vector> m_TfSol; + std::vector> m_TbSol; + std::vector> m_RfSol; + std::vector> m_RbSol; + + static std::vector condensedSpectrum() + { + return {0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + } + + static std::vector> loadTfVis() + { + std::vector> data{ + {1.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174}, + {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, + {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, + {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, + {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, + {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}, + {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}}; + + return data; + } + + static std::vector> loadRfVis() + { + std::vector> data{ + {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805}, + {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, + {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, + {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, + {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, + {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}, + {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}}; + + return data; + } + + static std::vector> loadTfSol() + { + std::vector> data{ + {2.033760, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174, 0.022174}, + {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, + {0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223, 0.022223}, + {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, + {0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461, 0.022461}, + {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}, + {0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551, 0.023551}}; + + return data; + } + + static std::vector> loadRfSol() + { + std::vector> data{ + {0.148154, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805, 0.148805}, + {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, + {0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762, 0.150762}, + {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, + {0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041, 0.154041}, + {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}, + {0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675, 0.158675}}; + + return data; + } + + +protected: + virtual void SetUp() + { + m_TfVis = loadTfVis(); + m_TbVis = m_TfVis; + m_RfVis = loadRfVis(); + m_RbVis = m_RfVis; + m_MaterialVis = + std::make_shared(m_TfVis, + m_TbVis, + m_RfVis, + m_RbVis, + m_Hemisphere, + FenestrationCommon::WavelengthRange::Visible); + m_TfSol = loadTfSol(); + m_TbSol = m_TfSol; + m_RfSol = loadRfSol(); + m_RbSol = m_RfSol; + m_MaterialSol = + std::make_shared(m_TfSol, + m_TbSol, + m_RfSol, + m_RbSol, + m_Hemisphere, + FenestrationCommon::WavelengthRange::Solar); + m_Material = std::make_shared(m_MaterialVis, m_MaterialSol); + + m_Material->setBandWavelengths(condensedSpectrum()); + } +}; + +TEST_F(TestBSDFMaterialDualBandCondensedRange, TestProperties) +{ + SCOPED_TRACE("Begin Test: Properties for a single band BSDF material."); + + using FenestrationCommon::Property; + using FenestrationCommon::Side; + + auto incomingDirections = m_Hemisphere.getDirections(BSDFDirection::Incoming); + auto outgoingDirections = m_Hemisphere.getDirections(BSDFDirection::Outgoing); + auto outgoingLambdas = m_Hemisphere.getDirections(BSDFDirection::Outgoing).lambdaVector(); + + // Test to make sure that the value returned by normal incidence matches the + // value returned by the CMaterialSingleBandBSDF that represents the full range + EXPECT_EQ(m_Material->getProperty(Property::T, Side::Front), + m_MaterialSol->getProperty(Property::T, Side::Front)); + + // Test to make sure an off-normal incoming and outgoing angle produce the same result + // as the value returned by the CMaterialSingleBandBSDF that represents the full range + double incomingTheta = 0; + double incomingPhi = 0; + double outgoingTheta = 0; + double outgoingPhi = 0; + CBeamDirection incomingDirection(incomingTheta, incomingPhi); + CBeamDirection outgoingDirection(outgoingTheta, outgoingPhi); + EXPECT_EQ( + m_Material->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection), + m_MaterialSol->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection)); + + const auto wavelengths{m_Material->getBandWavelengths()}; + const std::vector correctWavelengths{0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); + for(size_t i = 0u; i < correctWavelengths.size(); ++i) + { + EXPECT_NEAR(wavelengths[i], correctWavelengths[i], 1e-6); + } + + // Test to make sure getBandProperties returns the correctly scaled values + // for each of the calculated wavelength bands. + auto bandProperties = + m_Material->getBandProperties(Property::T, Side::Front, incomingDirection, outgoingDirection); + std::vector expectedBandProperties{0.121977, + 0.0416186, + 0.0416186, + 0.0416186, + 0.0416186, + 0.0416186, + 0.0416186, + 0.121977, + 0.121977, + 0.121977, + 0.121977, + 0.121977, + 0.121977, + 0.121977, + 0.121977, + 0.121977, + 0.121977}; + + EXPECT_EQ(bandProperties.size(), expectedBandProperties.size()); + for(size_t i = 0u; i < expectedBandProperties.size(); ++i) + { + EXPECT_NEAR(expectedBandProperties[i], bandProperties[i], 1e-6); + } +} \ No newline at end of file diff --git a/src/SingleLayerOptics/tst/units/DoubleRangeMaterialCondensedSpectrum.unit.cpp b/src/SingleLayerOptics/tst/units/DoubleRangeMaterialCondensedSpectrum.unit.cpp new file mode 100644 index 00000000..279ee29f --- /dev/null +++ b/src/SingleLayerOptics/tst/units/DoubleRangeMaterialCondensedSpectrum.unit.cpp @@ -0,0 +1,159 @@ +#include +#include + +#include "WCESingleLayerOptics.hpp" + +using SingleLayerOptics::CMaterial; +using SingleLayerOptics::Material; + +// Creation of double range material with provided ratio +class TestDoubleRangeMaterialRatioCondensedSpectrum : public testing::Test +{ +private: + std::shared_ptr m_Material; + + static std::vector condensedSpectrum() + { + return {0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + } + +protected: + virtual void SetUp() + { + // Solar range material + const auto Tsol = 0.1; + const auto Rfsol = 0.7; + const auto Rbsol = 0.7; + + // Visible range + const auto Tvis = 0.2; + const auto Rfvis = 0.6; + const auto Rbvis = 0.6; + + m_Material = Material::dualBandMaterial(Tsol, Tsol, Rfsol, Rbsol, Tvis, Tvis, Rfvis, Rbvis); + + m_Material->setBandWavelengths(condensedSpectrum()); + } + +public: + std::shared_ptr getMaterial() + { + return m_Material; + }; +}; + +TEST_F(TestDoubleRangeMaterialRatioCondensedSpectrum, TestMaterialProperties) +{ + SCOPED_TRACE("Begin Test: Phi angles creation."); + + using FenestrationCommon::Property; + using FenestrationCommon::Side; + + std::shared_ptr aMaterial = getMaterial(); + + double T = aMaterial->getProperty(Property::T, Side::Front); + + // Test for solar range first + EXPECT_NEAR(0.1, T, 1e-6); + + double R = aMaterial->getProperty(Property::R, Side::Front); + + EXPECT_NEAR(0.7, R, 1e-6); + + const auto wavelengths{aMaterial->getBandWavelengths()}; + const std::vector correctWavelengths{0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); + for(size_t i = 0u; i < correctWavelengths.size(); ++i) + { + EXPECT_NEAR(wavelengths[i], correctWavelengths[i], 1e-6); + } + + // Properties at four wavelengths should have been created + size_t size = correctWavelengths.size(); + + const auto Transmittances = aMaterial->getBandProperties(Property::T, Side::Front); + + EXPECT_EQ(size, Transmittances.size()); + + std::vector correctResults{0.000399, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.000399, + 0.000399, + 0.000399, + 0.000399, + 0.000399, + 0.000399, + 0.000399, + 0.000399, + 0.000399, + 0.000399}; + + for(size_t i = 0; i < size; ++i) + { + EXPECT_NEAR(correctResults[i], Transmittances[i], 1e-6); + } + + const auto Reflectances = aMaterial->getBandProperties(Property::R, Side::Front); + + EXPECT_EQ(size, Reflectances.size()); + + correctResults = {0.799601, + 0.6, + 0.6, + 0.6, + 0.6, + 0.6, + 0.6, + 0.799601, + 0.799601, + 0.799601, + 0.799601, + 0.799601, + 0.799601, + 0.799601, + 0.799601, + 0.799601, + 0.799601}; + + for(size_t i = 0; i < size; ++i) + { + EXPECT_NEAR(correctResults[i], Reflectances[i], 1e-6); + } +} From 86e51379f20bd0f83d3e1ff2dff5730ebc9c5d84 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 27 Jul 2022 10:51:25 -0700 Subject: [PATCH 09/81] Compilation errors under windows. Attempt to see apple clang --- .../src/EquivalentBSDFLayer.cpp | 5 +- .../src/EquivalentBSDFLayer.hpp | 1 - .../src/EquivalentBSDFLayerSingleBand.cpp | 40 +++++----- .../src/EquivalentBSDFLayerSingleBand.hpp | 24 ++---- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 74 +++++++++---------- src/MultiLayerOptics/src/MultiPaneBSDF.hpp | 13 +--- .../units/DoubleLayerBSDFSpecular.unit.cpp | 4 +- .../tst/units/MultiLayer1.unit.cpp | 4 +- src/SingleLayerOptics/src/BSDFIntegrator.cpp | 12 +-- src/SingleLayerOptics/src/BSDFIntegrator.hpp | 13 ++-- src/SingleLayerOptics/src/BSDFLayer.cpp | 21 +++--- src/SingleLayerOptics/src/BSDFLayer.hpp | 16 ++-- .../src/DirectionalDiffuseBSDFLayer.cpp | 11 +-- src/SingleLayerOptics/src/ScatteringLayer.cpp | 8 +- src/SingleLayerOptics/src/ScatteringLayer.hpp | 2 +- .../src/UniformDiffuseBSDFLayer.cpp | 11 +-- 16 files changed, 117 insertions(+), 142 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 3ebe3c17..5179d583 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -22,7 +22,7 @@ namespace MultiLayerOptics t_Layer->setBandWavelengths(m_CombinedLayerWavelengths); if(m_Layer.empty()) { - m_Lambda = t_Layer->getResults()->lambdaMatrix(); + m_Lambda = t_Layer->getResults().lambdaMatrix(); } updateWavelengthLayers(*t_Layer); m_Layer.push_back(t_Layer); @@ -163,8 +163,7 @@ namespace MultiLayerOptics const auto index = t_Layer.getBandIndex(curWL); assert(index > -1); - const std::shared_ptr currentLayer = - (*aResults)[static_cast(index)]; + const CBSDFIntegrator currentLayer = aResults[static_cast(index)]; if(m_LayersWL.size() <= i) { diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index 9c797db8..b741c2f4 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -22,7 +22,6 @@ namespace FenestrationCommon namespace SingleLayerOptics { - class CBSDFIntegrator; enum class BSDFDirection; class CBSDFDirections; diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp index 9b13a6d6..71be1ebb 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp @@ -60,8 +60,8 @@ namespace MultiLayerOptics aLambda); m_Results = std::make_shared(t_FrontLayer); - m_Results->setResultMatrices(m_Tf, m_Rf, Side::Front); - m_Results->setResultMatrices(m_Tb, m_Rb, Side::Back); + m_Results->setMatrices(m_Tf, m_Rf, Side::Front); + m_Results->setMatrices(m_Tb, m_Rb, Side::Back); } std::shared_ptr CBSDFDoubleLayer::value() const @@ -99,7 +99,7 @@ namespace MultiLayerOptics ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// CEquivalentBSDFLayerSingleBand::CEquivalentBSDFLayerSingleBand( - const std::shared_ptr & t_Layer, + const CBSDFIntegrator & t_Layer, const std::vector & jscPrimeFront, const std::vector & jscPrimeBack) : m_PropertiesCalculated(false) @@ -111,7 +111,7 @@ namespace MultiLayerOptics else { m_JSCPrime[Side::Front].emplace_back( - std::vector(t_Layer->lambdaVector().size(), 0)); + std::vector(t_Layer.lambdaVector().size(), 0)); } if(!jscPrimeBack.empty()) { @@ -120,23 +120,23 @@ namespace MultiLayerOptics else { m_JSCPrime[Side::Back].emplace_back( - std::vector(t_Layer->lambdaVector().size(), 0)); + std::vector(t_Layer.lambdaVector().size(), 0)); } - m_EquivalentLayer = std::make_shared(t_Layer); + m_EquivalentLayer = CBSDFIntegrator(t_Layer); for(Side aSide : EnumSide()) { m_A[aSide] = std::vector>(); m_JSC[aSide] = std::vector>(); } m_Layers.push_back(t_Layer); - m_Lambda = t_Layer->lambdaMatrix(); + m_Lambda = t_Layer.lambdaMatrix(); } SquareMatrix CEquivalentBSDFLayerSingleBand::getMatrix(const Side t_Side, const PropertySimple t_Property) { calcEquivalentProperties(); - return m_EquivalentLayer->getMatrix(t_Side, t_Property); + return m_EquivalentLayer.getMatrix(t_Side, t_Property); } SquareMatrix CEquivalentBSDFLayerSingleBand::getProperty(const Side t_Side, @@ -163,7 +163,7 @@ namespace MultiLayerOptics return m_Layers.size(); } - void CEquivalentBSDFLayerSingleBand::addLayer(const std::shared_ptr & t_Layer, + void CEquivalentBSDFLayerSingleBand::addLayer(const CBSDFIntegrator & t_Layer, const std::vector & jcsFront, const std::vector & jcsBack) { @@ -175,7 +175,7 @@ namespace MultiLayerOptics else { m_JSCPrime[Side::Front].emplace_back( - std::vector(t_Layer->lambdaVector().size(), 0)); + std::vector(t_Layer.lambdaVector().size(), 0)); } if(!jcsBack.empty()) { @@ -184,7 +184,7 @@ namespace MultiLayerOptics else { m_JSCPrime[Side::Back].emplace_back( - std::vector(t_Layer->lambdaVector().size(), 0)); + std::vector(t_Layer.lambdaVector().size(), 0)); } m_PropertiesCalculated = false; for(Side aSide : EnumSide()) @@ -200,15 +200,15 @@ namespace MultiLayerOptics m_Forward.push_back(m_EquivalentLayer); for(size_t i = 1; i < numberOfLayers; ++i) { - m_EquivalentLayer = CBSDFDoubleLayer(*m_EquivalentLayer, *m_Layers[i]).value(); + m_EquivalentLayer = CBSDFDoubleLayer(m_EquivalentLayer, m_Layers[i]).value(); m_Forward.push_back(m_EquivalentLayer); } m_Backward.push_back(m_EquivalentLayer); - std::shared_ptr bLayer = m_Layers[numberOfLayers - 1]; + CBSDFIntegrator bLayer = m_Layers[numberOfLayers - 1]; for(size_t i = numberOfLayers - 1; i > 1; --i) { - bLayer = CBSDFDoubleLayer(*m_Layers[i - 1], *bLayer).value(); + bLayer = CBSDFDoubleLayer(m_Layers[i - 1], bLayer).value(); m_Backward.push_back(bLayer); } m_Backward.push_back(m_Layers[numberOfLayers - 1]); @@ -233,8 +233,8 @@ namespace MultiLayerOptics } else { - CBSDFIntegrator & Layer1 = *m_Forward[i]; - CBSDFIntegrator & Layer2 = *m_Backward[i + 1]; + CBSDFIntegrator & Layer1 = m_Forward[i]; + CBSDFIntegrator & Layer2 = m_Backward[i + 1]; const auto InterRefl2{interReflectance(m_Lambda, Layer2.at(Side::Front, PropertySimple::R), Layer1.at(Side::Back, PropertySimple::R))}; @@ -257,8 +257,8 @@ namespace MultiLayerOptics } else { - CBSDFIntegrator & Layer1 = *m_Forward[i - 1]; - CBSDFIntegrator & Layer2 = *m_Backward[i]; + CBSDFIntegrator & Layer1 = m_Forward[i - 1]; + CBSDFIntegrator & Layer2 = m_Backward[i]; const auto InterRefl1{interReflectance(m_Lambda, Layer1.at(Side::Back, PropertySimple::R), Layer2.at(Side::Front, PropertySimple::R))}; @@ -279,8 +279,8 @@ namespace MultiLayerOptics { for(Side aSide : EnumSide()) { - auto AbsFront{m_Layers[i]->Abs(aSide)}; - auto AbsBack{m_Layers[i]->Abs(oppositeSide(aSide))}; + auto AbsFront{m_Layers[i].Abs(aSide)}; + auto AbsBack{m_Layers[i].Abs(oppositeSide(aSide))}; auto aEnergyFlow{aSide == Side::Front ? EnergyFlow::Forward : EnergyFlow::Backward}; auto absorbedFront{AbsFront * m_Iminus.at(aEnergyFlow)[i]}; auto absorbedBack{AbsBack * m_Iplus.at(aEnergyFlow)[i]}; diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp index 37aacea8..3ce7398f 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp @@ -1,17 +1,11 @@ -#ifndef EQUIVALENTBSDFLAYERSINGLEBAND_H -#define EQUIVALENTBSDFLAYERSINGLEBAND_H +#pragma once #include #include #include #include "WCECommon.hpp" -#include "../../SingleLayerOptics/src/BSDFIntegrator.hpp" - -namespace SingleLayerOptics -{ - class CBSDFIntegrator; -} +#include "WCESingleLayerOptics.hpp" namespace MultiLayerOptics { @@ -61,10 +55,10 @@ namespace MultiLayerOptics { public: explicit CEquivalentBSDFLayerSingleBand( - const std::shared_ptr & t_Layer, + const SingleLayerOptics::CBSDFIntegrator & t_Layer, const std::vector & jscPrimeFront = std::vector(), const std::vector & jscPrimeBack = std::vector()); - void addLayer(const std::shared_ptr & t_Layer, + void addLayer(const SingleLayerOptics::CBSDFIntegrator & t_Layer, const std::vector & jcsFront = std::vector(), const std::vector & jcsBack = std::vector()); void BuildForwardAndBackwardLayers(size_t numberOfLayers); @@ -94,12 +88,12 @@ namespace MultiLayerOptics const FenestrationCommon::SquareMatrix & t_R, const FenestrationCommon::SquareMatrix & t_T) const; - std::shared_ptr m_EquivalentLayer; - std::vector> m_Layers; + SingleLayerOptics::CBSDFIntegrator m_EquivalentLayer; + std::vector m_Layers; // Forward and backward layers are used for calculation of equivalent absorptances - std::vector> m_Forward; - std::vector> m_Backward; + std::vector m_Forward; + std::vector m_Backward; // Equations for absorptance calculations are described in "Klems-Matrix Layer Calculations" // document. Two equations (3.7a) and (3.7b) are used to calculate front and back @@ -128,5 +122,3 @@ namespace MultiLayerOptics }; } // namespace MultiLayerOptics - -#endif diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index af0cc541..e46e7124 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -25,7 +25,7 @@ namespace MultiLayerOptics const FenestrationCommon::CSeries & t_SolarRadiation, const FenestrationCommon::CSeries & t_DetectorData, const std::vector & t_CommonWavelengths) : - m_Layer(t_CommonWavelengths), + m_EquivalentLayer(t_CommonWavelengths), m_Results( std::make_shared(t_Layer[0]->getDirections(BSDFDirection::Incoming))), m_Calculated(false), @@ -41,7 +41,7 @@ namespace MultiLayerOptics const std::vector> & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation, const std::vector & t_CommonWavelengths) : - m_Layer(t_CommonWavelengths), + m_EquivalentLayer(t_CommonWavelengths), m_Results( std::make_shared(t_Layer[0]->getDirections(BSDFDirection::Incoming))), m_Calculated(false), @@ -73,16 +73,16 @@ namespace MultiLayerOptics } // This will initialize layer material data with given spectral distribution - this->m_Layer.setSolarRadiation(this->m_SolarRadiationInit); + this->m_EquivalentLayer.setSolarRadiation(this->m_SolarRadiationInit); size_t directionsSize = t_Layer[0]->getDirections(BSDFDirection::Incoming).size(); this->m_IncomingSolar.resize(directionsSize); // For blank incoming spectra, defaults needs to be filled into - this->m_IncomingSpectra = std::make_shared>(); + this->m_IncomingSpectra = std::vector(directionsSize); for(size_t i = 0; i < directionsSize; ++i) { - this->m_IncomingSpectra->push_back(solarRadiation); + this->m_IncomingSpectra[i] = solarRadiation; } // First layer has already been added. Must skip it here @@ -97,7 +97,7 @@ namespace MultiLayerOptics const std::vector & incomingSolar) { std::vector> result; - const auto & layers{m_Layer.getLayers()}; + const auto & layers{m_EquivalentLayer.getLayers()}; assert(layers.size() == jsc.size()); for(size_t i = 0u; i < layers.size(); ++i) { @@ -134,7 +134,7 @@ namespace MultiLayerOptics { calculate(minLambda, maxLambda); - return m_Results->getMatrix(t_Side, t_Property); + return m_Results.getMatrix(t_Side, t_Property); } double CMultiPaneBSDF::DirDir(const double minLambda, @@ -146,7 +146,7 @@ namespace MultiLayerOptics { calculate(minLambda, maxLambda); - return m_Results->DirDir(t_Side, t_Property, t_Theta, t_Phi); + return m_Results.DirDir(t_Side, t_Property, t_Theta, t_Phi); } double CMultiPaneBSDF::DirDir(const double minLambda, @@ -157,7 +157,7 @@ namespace MultiLayerOptics { calculate(minLambda, maxLambda); - return m_Results->DirDir(t_Side, t_Property, Index); + return m_Results.DirDir(t_Side, t_Property, Index); } void CMultiPaneBSDF::calculate(const double minLambda, const double maxLambda) @@ -167,11 +167,11 @@ namespace MultiLayerOptics { m_IncomingSolar.clear(); - for(CSeries & aSpectra : *m_IncomingSpectra) + for(CSeries & aSpectra : m_IncomingSpectra) { // each incoming spectra must be interpolated to same wavelengths as this IGU is // using - aSpectra = aSpectra.interpolate(m_Layer.getCommonWavelengths()); + aSpectra = aSpectra.interpolate(m_EquivalentLayer.getCommonWavelengths()); CSeries iTotalSolar = *aSpectra.integrate(m_Integrator, m_NormalizationCoefficient); m_IncomingSolar.push_back(iTotalSolar.sum(minLambda, maxLambda)); @@ -184,14 +184,14 @@ namespace MultiLayerOptics { // It is important to take a copy of aTotalA because it will be used to // multiply and integrate later and local values will change - CMatrixSeries aTotalA = *m_Layer.getTotalA(aSide); - aTotalA.mMult(*m_IncomingSpectra); + CMatrixSeries aTotalA = *m_EquivalentLayer.getTotalA(aSide); + aTotalA.mMult(m_IncomingSpectra); // Calculates absorbed energy in every layer for every wavelength aTotalA.integrate(m_Integrator, m_NormalizationCoefficient); // Calculates total absorptance for every layer over the given wavelength range m_Abs[aSide] = aTotalA.getSums(minLambda, maxLambda, m_IncomingSolar); - CMatrixSeries jscTotal = *m_Layer.getTotalJSC(aSide); + CMatrixSeries jscTotal = *m_EquivalentLayer.getTotalJSC(aSide); jscTotal.integrate(m_Integrator, m_NormalizationCoefficient); auto jscSum{jscTotal.getSums(minLambda, maxLambda)}; @@ -212,17 +212,17 @@ namespace MultiLayerOptics { // Same as for aTotalA. Copy need to be taken because of multiplication // and integration - CMatrixSeries aTot = *m_Layer.getTotal(aSide, aProprerty); - aTot.mMult(*m_IncomingSpectra); + CMatrixSeries aTot = *m_EquivalentLayer.getTotal(aSide, aProprerty); + aTot.mMult(m_IncomingSpectra); aTot.integrate(m_Integrator, m_NormalizationCoefficient); aResults[std::make_pair(aSide, aProprerty)] = aTot.getSquaredMatrixSums(minLambda, maxLambda, m_IncomingSolar); } // Update result matrices - m_Results->setResultMatrices(aResults.at(std::make_pair(aSide, PropertySimple::T)), - aResults.at(std::make_pair(aSide, PropertySimple::R)), - aSide); + m_Results.setMatrices(aResults.at(std::make_pair(aSide, PropertySimple::T)), + aResults.at(std::make_pair(aSide, PropertySimple::R)), + aSide); } // calculate hemispherical absorptances @@ -251,9 +251,9 @@ namespace MultiLayerOptics const size_t numOfLayers = m_Abs[t_Side].size(); for(size_t layNum = 0; layNum < numOfLayers; ++layNum) { - m_AbsHem[t_Side].push_back(integrateBSDFAbsorptance(m_Results->lambdaVector(), m_Abs[t_Side][layNum])); + m_AbsHem[t_Side].push_back(integrateBSDFAbsorptance(m_Results.lambdaVector(), m_Abs[t_Side][layNum])); m_AbsHemElectricity[t_Side].push_back( - integrateBSDFAbsorptance(m_Results->lambdaVector(), m_AbsElectricity[t_Side][layNum])); + integrateBSDFAbsorptance(m_Results.lambdaVector(), m_AbsElectricity[t_Side][layNum])); } } @@ -318,7 +318,7 @@ namespace MultiLayerOptics const PropertySimple t_Property) { calculate(minLambda, maxLambda); - return m_Results->DirHem(t_Side, t_Property); + return m_Results.DirHem(t_Side, t_Property); } double CMultiPaneBSDF::DirHem(const double minLambda, @@ -328,7 +328,7 @@ namespace MultiLayerOptics const double t_Theta, const double t_Phi) { - const auto aIndex = m_Results->getNearestBeamIndex(t_Theta, t_Phi); + const auto aIndex = m_Results.getNearestBeamIndex(t_Theta, t_Phi); return DirHem(minLambda, maxLambda, t_Side, t_Property)[aIndex]; } @@ -348,7 +348,7 @@ namespace MultiLayerOptics const double t_Theta, const double t_Phi) { - auto aIndex = m_Results->getNearestBeamIndex(t_Theta, t_Phi); + auto aIndex = m_Results.getNearestBeamIndex(t_Theta, t_Phi); return Abs(minLambda, maxLambda, t_Side, layerIndex)[aIndex]; } @@ -370,7 +370,7 @@ namespace MultiLayerOptics double t_Theta, double t_Phi) { - auto aIndex = m_Results->getNearestBeamIndex(t_Theta, t_Phi); + auto aIndex = m_Results.getNearestBeamIndex(t_Theta, t_Phi); return AbsElectricity(minLambda, maxLambda, t_Side, layerIndex)[aIndex]; } @@ -389,7 +389,7 @@ namespace MultiLayerOptics const PropertySimple t_Property) { calculate(minLambda, maxLambda); - return m_Results->DiffDiff(t_Side, t_Property); + return m_Results.DiffDiff(t_Side, t_Property); } double CMultiPaneBSDF::AbsDiff(const double minLambda, @@ -427,7 +427,7 @@ namespace MultiLayerOptics const double t_Phi) { calculate(minLambda, maxLambda); - const auto aIndex = m_Results->getNearestBeamIndex(t_Theta, t_Phi); + const auto aIndex = m_Results.getNearestBeamIndex(t_Theta, t_Phi); const auto solarRadiation = m_IncomingSolar[aIndex]; const auto dirHem = DirHem(minLambda, maxLambda, t_Side, t_Property)[aIndex]; return dirHem * solarRadiation; @@ -441,7 +441,7 @@ namespace MultiLayerOptics const double t_Phi) { calculate(minLambda, maxLambda); - auto aIndex = m_Results->getNearestBeamIndex(t_Theta, t_Phi); + auto aIndex = m_Results.getNearestBeamIndex(t_Theta, t_Phi); double solarRadiation = m_IncomingSolar[aIndex]; double abs = Abs(minLambda, maxLambda, t_Side, Index)[aIndex]; return abs * solarRadiation; @@ -456,8 +456,8 @@ namespace MultiLayerOptics void CMultiPaneBSDF::addLayer(const std::shared_ptr & t_Layer) { - m_Layer.addLayer(t_Layer); - m_Layer.setSolarRadiation(m_SolarRadiationInit); + m_EquivalentLayer.addLayer(t_Layer); + m_EquivalentLayer.setSolarRadiation(m_SolarRadiationInit); } std::unique_ptr @@ -465,7 +465,7 @@ namespace MultiLayerOptics const FenestrationCommon::CSeries & t_SolarRadiation, const std::vector & t_CommonWavelengths) { - // make_shared will not work from private function so it needs to be created this way + // make_shared will not work from private function and it needs to be created this way return std::unique_ptr( new CMultiPaneBSDF({t_Layer}, t_SolarRadiation, t_CommonWavelengths)); } @@ -562,17 +562,17 @@ namespace MultiLayerOptics std::vector CMultiPaneBSDF::getWavelengths() const { // return std::vector(); - return m_Layer.getCommonWavelengths(); + return m_EquivalentLayer.getCommonWavelengths(); } double CMultiPaneBSDF::getMinLambda() const { // return 0; - return m_Layer.getMinLambda(); + return m_EquivalentLayer.getMinLambda(); } double CMultiPaneBSDF::getMaxLambda() const { // return 0; - return m_Layer.getMaxLambda(); + return m_EquivalentLayer.getMaxLambda(); } std::vector CMultiPaneBSDF::getAbsorptanceLayers(const double minLambda, @@ -583,7 +583,7 @@ namespace MultiLayerOptics const double phi) { std::vector abs; - size_t absSize{m_Layer.numberOfLayers()}; + size_t absSize{m_EquivalentLayer.numberOfLayers()}; for(size_t i = 1u; i <= absSize; ++i) { switch(scattering) @@ -608,7 +608,7 @@ namespace MultiLayerOptics const double phi) { std::vector abs; - size_t absSize{m_Layer.numberOfLayers()}; + size_t absSize{m_EquivalentLayer.numberOfLayers()}; for(size_t i = 1u; i <= absSize; ++i) { switch(scattering) @@ -632,7 +632,7 @@ namespace MultiLayerOptics const double phi) { std::vector abs; - size_t absSize{m_Layer.numberOfLayers()}; + size_t absSize{m_EquivalentLayer.numberOfLayers()}; for(size_t i = 1u; i <= absSize; ++i) { switch(scattering) diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp index 9bb95b8a..1b84bdf7 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp @@ -20,17 +20,10 @@ namespace FenestrationCommon } // namespace FenestrationCommon -namespace SingleLayerOptics -{ - class CBSDFIntegrator; -} - namespace MultiLayerOptics { class CEquivalentBSDFLayer; - typedef std::shared_ptr> p_VectorSeries; - class CMultiPaneBSDF : public SingleLayerOptics::IScatteringLayer { public: @@ -277,15 +270,15 @@ namespace MultiLayerOptics double integrateBSDFAbsorptance(const std::vector & lambda, const std::vector & absorptance); - CEquivalentBSDFLayer m_Layer; + CEquivalentBSDFLayer m_EquivalentLayer; // Solar radiation for initialization FenestrationCommon::CSeries m_SolarRadiationInit; - p_VectorSeries m_IncomingSpectra; + std::vector m_IncomingSpectra; std::vector m_IncomingSolar; - std::shared_ptr m_Results; + SingleLayerOptics::CBSDFIntegrator m_Results; // Absorptances of every layer and every incoming direction in BSDF integrated over given // range diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp index 11c79347..9d88ea02 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp @@ -286,8 +286,8 @@ class TestDoubleLayerBSDFSpecular : public testing::Test auto aLayer102 = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); aLayer102->setSourceData(aSolarRadiation); - CBSDFIntegrator aLayer1 = *aLayer102->getResults(); - CBSDFIntegrator aLayer2 = *aLayer102->getResults(); + CBSDFIntegrator aLayer1 = aLayer102->getResults(); + CBSDFIntegrator aLayer2 = aLayer102->getResults(); m_DoubleLayer = std::make_shared(aLayer1, aLayer2); } diff --git a/src/MultiLayerOptics/tst/units/MultiLayer1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiLayer1.unit.cpp index 03176da1..a57e3a91 100644 --- a/src/MultiLayerOptics/tst/units/MultiLayer1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiLayer1.unit.cpp @@ -35,8 +35,8 @@ class TestMultiLayer1 : public testing::Test m_Layer = CMultiLayerScattered::create({aLayer1, aLayer2, aLayer3}); // Additional layers can be inserted as following - // m_Layer->addLayer(aLayer2); - // m_Layer->addLayer(aLayer3); + // m_EquivalentLayer->addLayer(aLayer2); + // m_EquivalentLayer->addLayer(aLayer3); } public: diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.cpp b/src/SingleLayerOptics/src/BSDFIntegrator.cpp index 30b585e8..b3967793 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.cpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.cpp @@ -7,11 +7,11 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { - CBSDFIntegrator::CBSDFIntegrator(const std::shared_ptr & t_Integrator) : - m_Directions(t_Integrator->m_Directions), + CBSDFIntegrator::CBSDFIntegrator(const CBSDFIntegrator & t_Integrator) : + m_Directions(t_Integrator.m_Directions), m_DimMatrices(m_Directions.size()), - m_HemisphericalCalculated(false), - m_DiffuseDiffuseCalculated(false) + m_HemisphericalCalculated(t_Integrator.m_HemisphericalCalculated), + m_DiffuseDiffuseCalculated(t_Integrator.m_DiffuseDiffuseCalculated) { for(auto t_Side : EnumSide()) { @@ -45,7 +45,7 @@ namespace SingleLayerOptics return m_MapDiffDiff.at(t_Side, t_Property); } - SquareMatrix & CBSDFIntegrator::getMatrix(const Side t_Side, const PropertySimple t_Property) + SquareMatrix CBSDFIntegrator::getMatrix(const Side t_Side, const PropertySimple t_Property) { return m_Matrix[std::make_pair(t_Side, t_Property)]; } @@ -57,7 +57,7 @@ namespace SingleLayerOptics return m_Matrix.at(std::make_pair(t_Side, t_Property)); } - void CBSDFIntegrator::setResultMatrices(const SquareMatrix & t_Tau, + void CBSDFIntegrator::setMatrices(const SquareMatrix & t_Tau, const SquareMatrix & t_Rho, Side t_Side) { diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.hpp b/src/SingleLayerOptics/src/BSDFIntegrator.hpp index 75482e53..99d7f4c1 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.hpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.hpp @@ -25,19 +25,20 @@ namespace SingleLayerOptics class CBSDFIntegrator { public: - explicit CBSDFIntegrator(const std::shared_ptr & t_Integrator); + CBSDFIntegrator() = default; + CBSDFIntegrator(const CBSDFIntegrator & t_Integrator); explicit CBSDFIntegrator(const CBSDFDirections & t_Directions); // Result matrices - FenestrationCommon::SquareMatrix & getMatrix(FenestrationCommon::Side t_Side, + FenestrationCommon::SquareMatrix getMatrix(FenestrationCommon::Side t_Side, FenestrationCommon::PropertySimple t_Property); [[nodiscard]] const FenestrationCommon::SquareMatrix & at(FenestrationCommon::Side t_Side, FenestrationCommon::PropertySimple t_Property) const; - void setResultMatrices(const FenestrationCommon::SquareMatrix & t_Tau, - const FenestrationCommon::SquareMatrix & t_Rho, - FenestrationCommon::Side t_Side); + void setMatrices(const FenestrationCommon::SquareMatrix & t_Tau, + const FenestrationCommon::SquareMatrix & t_Rho, + FenestrationCommon::Side t_Side); // Direct-direct components double DirDir(FenestrationCommon::Side t_Side, @@ -75,7 +76,7 @@ namespace SingleLayerOptics size_t getNearestBeamIndex(double t_Theta, double t_Phi) const; protected: - const CBSDFDirections m_Directions; + CBSDFDirections m_Directions; size_t m_DimMatrices; private: diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index a4f1f505..1c284335 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -13,12 +13,14 @@ namespace SingleLayerOptics { CBSDFLayer::CBSDFLayer(const std::shared_ptr & t_Cell, const CBSDFHemisphere & t_Hemisphere) : - m_BSDFHemisphere(t_Hemisphere), m_Cell(t_Cell), m_Calculated(false), m_CalculatedWV(false) + m_BSDFHemisphere(t_Hemisphere), + m_Results(m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)), + m_Cell(t_Cell), + m_Calculated(false), + m_CalculatedWV(false) { // TODO: Maybe to refactor results to incoming and outgoing if not affecting speed. // This is not necessary before axisymmetry is introduced - m_Results = std::make_shared( - m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)); } void CBSDFLayer::setSourceData(CSeries & t_SourceData) @@ -33,7 +35,7 @@ namespace SingleLayerOptics return m_BSDFHemisphere.getDirections(t_Side); } - std::shared_ptr CBSDFLayer::getResults() + CBSDFIntegrator CBSDFLayer::getResults() { if(!m_Calculated) { @@ -43,7 +45,7 @@ namespace SingleLayerOptics return m_Results; } - std::shared_ptr CBSDFLayer::getWavelengthResults() + std::vector CBSDFLayer::getWavelengthResults() { if(!m_CalculatedWV) { @@ -87,7 +89,7 @@ namespace SingleLayerOptics tau(i, i) += aTau / Lambda; rho(i, i) += aRho / Lambda; } - m_Results->setResultMatrices(tau, rho, t_Side); + m_Results.setMatrices(tau, rho, t_Side); } } @@ -106,7 +108,7 @@ namespace SingleLayerOptics size_t numWV = aTau.size(); for(size_t j = 0; j < numWV; ++j) { - CBSDFIntegrator & aResults = *(*m_WVResults)[j]; + CBSDFIntegrator & aResults = m_WVResults[j]; auto & tau = aResults.getMatrix(aSide, PropertySimple::T); auto & rho = aResults.getMatrix(aSide, PropertySimple::R); tau(i, i) += aTau[j] / Lambda; @@ -148,13 +150,10 @@ namespace SingleLayerOptics void CBSDFLayer::fillWLResultsFromMaterialCell() { - m_WVResults = std::make_shared>>(); size_t size = m_Cell->getBandSize(); for(size_t i = 0; i < size; ++i) { - std::shared_ptr aResults = std::make_shared( - m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)); - m_WVResults->push_back(aResults); + m_WVResults.emplace_back(m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)); } } diff --git a/src/SingleLayerOptics/src/BSDFLayer.hpp b/src/SingleLayerOptics/src/BSDFLayer.hpp index c20e5843..c420de25 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.hpp +++ b/src/SingleLayerOptics/src/BSDFLayer.hpp @@ -5,6 +5,7 @@ #include #include "BSDFDirections.hpp" +#include "BSDFIntegrator.hpp" namespace FenestrationCommon { @@ -22,12 +23,9 @@ namespace SingleLayerOptics { enum class BSDFDirection; class CBaseCell; - class CBSDFIntegrator; class CBeamDirection; class CBSDFDirections; - typedef std::vector> BSDF_Results; - // Base class for handling BSDF Layer class CBSDFLayer { @@ -38,12 +36,12 @@ namespace SingleLayerOptics void setSourceData(FenestrationCommon::CSeries & t_SourceData); // BSDF results for the enire spectrum range of the material in the cell - std::shared_ptr getResults(); + CBSDFIntegrator getResults(); const CBSDFDirections & getDirections(BSDFDirection t_Side) const; // BSDF results for each wavelenght given in specular cell - std::shared_ptr getWavelengthResults(); + std::vector getWavelengthResults(); int getBandIndex(double t_Wavelength); @@ -79,16 +77,16 @@ namespace SingleLayerOptics const CBSDFHemisphere m_BSDFHemisphere; std::shared_ptr m_Cell; - std::shared_ptr m_Results; + CBSDFIntegrator m_Results; // Results over each wavelength - std::shared_ptr m_WVResults; + std::vector m_WVResults; private: void calc_dir_dir(); void calc_dir_dif(); void fillWLResultsFromMaterialCell(); - // Keeps state of the object. Calculations are not done by defult (in constructor) - // becuase they are time consuming. + // Keeps state of the object. Calculations are not done by default (in constructor) + // because they are time-consuming. bool m_Calculated; // Calculation of results over each wavelength diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp index 264c6379..ccc9da73 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp @@ -34,8 +34,8 @@ namespace SingleLayerOptics { std::shared_ptr aCell = cellAsDirectionalDiffuse(); - auto & tau = m_Results->getMatrix(aSide, PropertySimple::T); - auto & Rho = m_Results->getMatrix(aSide, PropertySimple::R); + auto & tau = m_Results.getMatrix(aSide, PropertySimple::T); + auto & Rho = m_Results.getMatrix(aSide, PropertySimple::R); const auto & jDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Outgoing); @@ -77,11 +77,8 @@ namespace SingleLayerOptics const size_t numWV = aTau.size(); for(size_t j = 0; j < numWV; ++j) { - std::shared_ptr aResults = nullptr; - aResults = (*m_WVResults)[j]; - assert(aResults != nullptr); - auto & tau = aResults->getMatrix(aSide, PropertySimple::T); - auto & rho = aResults->getMatrix(aSide, PropertySimple::R); + auto & tau = m_WVResults[j].getMatrix(aSide, PropertySimple::T); + auto & rho = m_WVResults[j].getMatrix(aSide, PropertySimple::R); tau(outgoingDirectionIndex, incomingDirectionIndex) += aTau[j] * diffuseDistributionScalar(outgoingDirectionIndex); rho(outgoingDirectionIndex, incomingDirectionIndex) += diff --git a/src/SingleLayerOptics/src/ScatteringLayer.cpp b/src/SingleLayerOptics/src/ScatteringLayer.cpp index 333a62c4..3c05fb82 100644 --- a/src/SingleLayerOptics/src/ScatteringLayer.cpp +++ b/src/SingleLayerOptics/src/ScatteringLayer.cpp @@ -218,19 +218,19 @@ namespace SingleLayerOptics double T_dir_dir = m_BSDFLayer->getCell()->T_dir_dir(t_Side, aDirection); double R_dir_dir = m_BSDFLayer->getCell()->R_dir_dir(t_Side, aDirection); double T_dir_dif = - m_BSDFLayer->getResults()->DirHem(t_Side, PropertySimple::T, t_Theta, t_Phi) - T_dir_dir; + m_BSDFLayer->getResults().DirHem(t_Side, PropertySimple::T, t_Theta, t_Phi) - T_dir_dir; if(T_dir_dif < 0) { T_dir_dif = 0; } double R_dir_dif = - m_BSDFLayer->getResults()->DirHem(t_Side, PropertySimple::R, t_Theta, t_Phi) - R_dir_dir; + m_BSDFLayer->getResults().DirHem(t_Side, PropertySimple::R, t_Theta, t_Phi) - R_dir_dir; if(R_dir_dif < 0) { R_dir_dif = 0; } - double T_dif_dif = m_BSDFLayer->getResults()->DiffDiff(t_Side, PropertySimple::T); - double R_dif_dif = m_BSDFLayer->getResults()->DiffDiff(t_Side, PropertySimple::R); + double T_dif_dif = m_BSDFLayer->getResults().DiffDiff(t_Side, PropertySimple::T); + double R_dif_dif = m_BSDFLayer->getResults().DiffDiff(t_Side, PropertySimple::R); return CScatteringSurface(T_dir_dir, R_dir_dir, T_dir_dif, R_dir_dif, T_dif_dif, R_dif_dif); } diff --git a/src/SingleLayerOptics/src/ScatteringLayer.hpp b/src/SingleLayerOptics/src/ScatteringLayer.hpp index dbc1a701..584f85ce 100644 --- a/src/SingleLayerOptics/src/ScatteringLayer.hpp +++ b/src/SingleLayerOptics/src/ScatteringLayer.hpp @@ -8,12 +8,12 @@ #include "IScatteringLayer.hpp" #include "OpticalSurface.hpp" #include "WCECommon.hpp" +#include "BSDFIntegrator.hpp" namespace SingleLayerOptics { class CLayerSingleComponent; class CMaterial; - class CBSDFIntegrator; class CBSDFLayer; class ICellDescription; diff --git a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp index 47099192..943aefd4 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp @@ -32,8 +32,8 @@ namespace SingleLayerOptics { std::shared_ptr aCell = cellAsUniformDiffuse(); - auto & Tau = m_Results->getMatrix(aSide, PropertySimple::T); - auto & Rho = m_Results->getMatrix(aSide, PropertySimple::R); + auto & Tau = m_Results.getMatrix(aSide, PropertySimple::T); + auto & Rho = m_Results.getMatrix(aSide, PropertySimple::R); double aTau = aCell->T_dir_dif(aSide, t_Direction); double Ref = aCell->R_dir_dif(aSide, t_Direction); @@ -69,11 +69,8 @@ namespace SingleLayerOptics { using ConstantsData::WCE_PI; - std::shared_ptr aResults = nullptr; - aResults = (*m_WVResults)[j]; - assert(aResults != nullptr); - auto & tau = aResults->getMatrix(aSide, PropertySimple::T); - auto & rho = aResults->getMatrix(aSide, PropertySimple::R); + auto & tau = m_WVResults[j].getMatrix(aSide, PropertySimple::T); + auto & rho = m_WVResults[j].getMatrix(aSide, PropertySimple::R); tau(i, t_DirectionIndex) += aTau[j] / WCE_PI; rho(i, t_DirectionIndex) += Ref[j] / WCE_PI; } From 08ae8f1782819b7316100b332622aeb8f88b2592 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 27 Jul 2022 11:34:30 -0700 Subject: [PATCH 10/81] Update to single layer optics references. Results are still incorrect. --- .../src/EquivalentBSDFLayerSingleBand.cpp | 8 +- .../src/EquivalentBSDFLayerSingleBand.hpp | 4 +- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 6 +- .../units/DoubleLayerBSDFPerforated.unit.cpp | 14 +- .../units/DoubleLayerBSDFSpecular.unit.cpp | 6 +- ...lentBSDFTriplePerforatedInBetween.unit.cpp | 6 +- src/SingleLayerOptics/src/BSDFDirections.hpp | 1 + src/SingleLayerOptics/src/BSDFIntegrator.cpp | 2 +- src/SingleLayerOptics/src/BSDFIntegrator.hpp | 4 +- src/SingleLayerOptics/src/BSDFPatch.hpp | 2 +- .../units/CircularPerforatedShade1.unit.cpp | 14 +- .../units/CircularPerforatedShade2.unit.cpp | 14 +- ...larPerforatedShadeMultiWavelength.unit.cpp | 47 +- .../CircularPerforatedShadeNFRC18000.unit.cpp | 12 +- .../tst/units/PerfectDiffuseShade1.unit.cpp | 10 +- .../RectangularPerforatedShade1.unit.cpp | 14 +- .../RectangularPerforatedShade2.unit.cpp | 12 +- .../units/SinglePaneBSDF_VenetianIR.unit.cpp | 2 +- .../units/SpecularAngularLayer_102.unit.cpp | 2067 +++++++++-------- ...cularBSDFLayer_SingleBandMaterial.unit.cpp | 8 +- .../SpecularLayerMultiWavelength_102.unit.cpp | 25 +- .../tst/units/SpecularLayer_102.unit.cpp | 14 +- .../tst/units/SpecularLayer_103.unit.cpp | 14 +- .../tst/units/SpecularLayer_1042.unit.cpp | 14 +- ...anDirectionalShadeCurvedMinus45_0.unit.cpp | 6 +- .../VenetianDirectionalShadeFlat0_1.unit.cpp | 12 +- .../VenetianDirectionalShadeFlat0_2.unit.cpp | 6 +- .../VenetianDirectionalShadeFlat0_3.unit.cpp | 10 +- .../VenetianDirectionalShadeFlat45_5.unit.cpp | 10 +- ...onalShadeFlat45_5_Multiwavelength.unit.cpp | 45 +- ...netianUniformShadeCurvedMinus45_0.unit.cpp | 6 +- ...netianUniformShadeCurvedMinus55_0.unit.cpp | 14 +- ...tianUniformShadeCurvedZeroAngle_0.unit.cpp | 12 +- .../VenetianUniformShadeFlat0_1.unit.cpp | 14 +- .../VenetianUniformShadeFlat0_2.unit.cpp | 6 +- .../VenetianUniformShadeFlat45_1.unit.cpp | 14 +- ...formShadeFlat45_5_Multiwavelength.unit.cpp | 21 +- .../units/VenetianUniformShadeMatrix.unit.cpp | 2 +- .../VenetianUniformShadeVertical.unit.cpp | 2 +- .../units/WovenShadeMultiWavelength.unit.cpp | 23 +- .../units/WovenShadeUniformMaterial.unit.cpp | 10 +- 41 files changed, 1268 insertions(+), 1265 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp index 71be1ebb..2647fd2c 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp @@ -59,12 +59,12 @@ namespace MultiLayerOptics InterRefl1, aLambda); - m_Results = std::make_shared(t_FrontLayer); - m_Results->setMatrices(m_Tf, m_Rf, Side::Front); - m_Results->setMatrices(m_Tb, m_Rb, Side::Back); + m_Results = CBSDFIntegrator(t_FrontLayer); + m_Results.setMatrices(m_Tf, m_Rf, Side::Front); + m_Results.setMatrices(m_Tb, m_Rb, Side::Back); } - std::shared_ptr CBSDFDoubleLayer::value() const + CBSDFIntegrator CBSDFDoubleLayer::value() const { return m_Results; } diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp index 3ce7398f..fb3c210f 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp @@ -25,7 +25,7 @@ namespace MultiLayerOptics CBSDFDoubleLayer(const SingleLayerOptics::CBSDFIntegrator & t_FrontLayer, const SingleLayerOptics::CBSDFIntegrator & t_BackLayer); - [[nodiscard]] std::shared_ptr value() const; + [[nodiscard]] SingleLayerOptics::CBSDFIntegrator value() const; private: static FenestrationCommon::SquareMatrix @@ -42,7 +42,7 @@ namespace MultiLayerOptics const FenestrationCommon::SquareMatrix & t_InterRefl, const FenestrationCommon::SquareMatrix & t_Lambda); - std::shared_ptr m_Results; + SingleLayerOptics::CBSDFIntegrator m_Results; FenestrationCommon::SquareMatrix m_Tf; FenestrationCommon::SquareMatrix m_Tb; diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index e46e7124..c34b4be1 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -26,8 +26,7 @@ namespace MultiLayerOptics const FenestrationCommon::CSeries & t_DetectorData, const std::vector & t_CommonWavelengths) : m_EquivalentLayer(t_CommonWavelengths), - m_Results( - std::make_shared(t_Layer[0]->getDirections(BSDFDirection::Incoming))), + m_Results(t_Layer[0]->getDirections(BSDFDirection::Incoming)), m_Calculated(false), m_MinLambdaCalculated(0), m_MaxLambdaCalculated(0), @@ -42,8 +41,7 @@ namespace MultiLayerOptics const FenestrationCommon::CSeries & t_SolarRadiation, const std::vector & t_CommonWavelengths) : m_EquivalentLayer(t_CommonWavelengths), - m_Results( - std::make_shared(t_Layer[0]->getDirections(BSDFDirection::Incoming))), + m_Results(t_Layer[0]->getDirections(BSDFDirection::Incoming)), m_Calculated(false), m_MinLambdaCalculated(0), m_MaxLambdaCalculated(0), diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp index 00fdb4c9..4220530b 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp @@ -298,8 +298,8 @@ class TestDoubleLayerBSDFPerforated : public testing::Test auto aShade = CBSDFLayerMaker::getCircularPerforatedLayer(perfMaterial, aBSDF, x, y, thickness, radius); - CBSDFIntegrator aLayer1 = *aLayer102->getResults(); - CBSDFIntegrator aLayer2 = *aShade->getResults(); + CBSDFIntegrator aLayer1 = aLayer102->getResults(); + CBSDFIntegrator aLayer2 = aShade->getResults(); m_DoubleLayer = std::make_shared(aLayer1, aLayer2); } @@ -315,10 +315,10 @@ TEST_F(TestDoubleLayerBSDFPerforated, TestDoubleLayerBSDF) { SCOPED_TRACE("Begin Test: Double Layer BSDF."); - std::shared_ptr aLayer = getDoubleLayer()->value(); + CBSDFIntegrator aLayer = getDoubleLayer()->value(); // Front transmittance - auto Tf = aLayer->getMatrix(Side::Front, PropertySimple::T); + auto Tf = aLayer.getMatrix(Side::Front, PropertySimple::T); size_t matrixSize = Tf.size(); // Test matrix @@ -344,7 +344,7 @@ TEST_F(TestDoubleLayerBSDFPerforated, TestDoubleLayerBSDF) } // Front reflectance - auto Rf = aLayer->getMatrix(Side::Front, PropertySimple::R); + auto Rf = aLayer.getMatrix(Side::Front, PropertySimple::R); matrixSize = Rf.size(); EXPECT_EQ(size, matrixSize); @@ -367,7 +367,7 @@ TEST_F(TestDoubleLayerBSDFPerforated, TestDoubleLayerBSDF) } // Back Transmittance - auto Tb = aLayer->getMatrix(Side::Back, PropertySimple::T); + auto Tb = aLayer.getMatrix(Side::Back, PropertySimple::T); matrixSize = Tb.size(); EXPECT_EQ(size, matrixSize); @@ -390,7 +390,7 @@ TEST_F(TestDoubleLayerBSDFPerforated, TestDoubleLayerBSDF) } // Back Reflectance - auto Rb = aLayer->getMatrix(Side::Back, PropertySimple::R); + auto Rb = aLayer.getMatrix(Side::Back, PropertySimple::R); matrixSize = Rb.size(); EXPECT_EQ(size, matrixSize); diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp index 9d88ea02..5d5bf990 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp @@ -303,9 +303,9 @@ TEST_F(TestDoubleLayerBSDFSpecular, TestDoubleLayerBSDF) { SCOPED_TRACE("Begin Test: Double Layer BSDF."); - std::shared_ptr aLayer = getDoubleLayer()->value(); + CBSDFIntegrator aLayer = getDoubleLayer()->value(); - auto T = aLayer->getMatrix(Side::Front, PropertySimple::T); + auto T = aLayer.getMatrix(Side::Front, PropertySimple::T); size_t matrixSize = T.size(); // Test matrix @@ -329,7 +329,7 @@ TEST_F(TestDoubleLayerBSDFSpecular, TestDoubleLayerBSDF) } } - auto R = aLayer->getMatrix(Side::Front, PropertySimple::R); + auto R = aLayer.getMatrix(Side::Front, PropertySimple::R); matrixSize = R.size(); EXPECT_EQ(size, matrixSize); diff --git a/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp index 8b1f941f..7ee30709 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp @@ -297,9 +297,9 @@ class TestEquivalentBSDFTriplePerforatedInBetween : public testing::Test auto aShade = CBSDFLayerMaker::getCircularPerforatedLayer(perfMaterial, aBSDF, x, y, thickness, radius); - std::shared_ptr aLayer1 = aLayer102->getResults(); - std::shared_ptr aLayer2 = aShade->getResults(); - std::shared_ptr aLayer3 = aLayer102->getResults(); + CBSDFIntegrator aLayer1 = aLayer102->getResults(); + CBSDFIntegrator aLayer2 = aShade->getResults(); + CBSDFIntegrator aLayer3 = aLayer102->getResults(); m_EquivalentBSDFLayer = std::make_shared(aLayer1); m_EquivalentBSDFLayer->addLayer(aLayer2); diff --git a/src/SingleLayerOptics/src/BSDFDirections.hpp b/src/SingleLayerOptics/src/BSDFDirections.hpp index fb47b28d..b1e8f376 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.hpp +++ b/src/SingleLayerOptics/src/BSDFDirections.hpp @@ -32,6 +32,7 @@ namespace SingleLayerOptics class CBSDFDirections { public: + CBSDFDirections() = default; CBSDFDirections(const std::vector & t_Definitions, BSDFDirection t_Side); [[nodiscard]] size_t size() const; const CBSDFPatch & operator[](size_t Index) const; diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.cpp b/src/SingleLayerOptics/src/BSDFIntegrator.cpp index b3967793..ff80847e 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.cpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.cpp @@ -45,7 +45,7 @@ namespace SingleLayerOptics return m_MapDiffDiff.at(t_Side, t_Property); } - SquareMatrix CBSDFIntegrator::getMatrix(const Side t_Side, const PropertySimple t_Property) + SquareMatrix & CBSDFIntegrator::getMatrix(const Side t_Side, const PropertySimple t_Property) { return m_Matrix[std::make_pair(t_Side, t_Property)]; } diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.hpp b/src/SingleLayerOptics/src/BSDFIntegrator.hpp index 99d7f4c1..0ff5e28d 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.hpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.hpp @@ -27,10 +27,10 @@ namespace SingleLayerOptics public: CBSDFIntegrator() = default; CBSDFIntegrator(const CBSDFIntegrator & t_Integrator); - explicit CBSDFIntegrator(const CBSDFDirections & t_Directions); + CBSDFIntegrator(const CBSDFDirections & t_Directions); // Result matrices - FenestrationCommon::SquareMatrix getMatrix(FenestrationCommon::Side t_Side, + FenestrationCommon::SquareMatrix & getMatrix(FenestrationCommon::Side t_Side, FenestrationCommon::PropertySimple t_Property); [[nodiscard]] const FenestrationCommon::SquareMatrix & diff --git a/src/SingleLayerOptics/src/BSDFPatch.hpp b/src/SingleLayerOptics/src/BSDFPatch.hpp index f81566cb..c245de13 100644 --- a/src/SingleLayerOptics/src/BSDFPatch.hpp +++ b/src/SingleLayerOptics/src/BSDFPatch.hpp @@ -40,7 +40,7 @@ namespace SingleLayerOptics private: void calculateLambda(); std::shared_ptr m_Theta; - const CAngleLimits m_Phi; + CAngleLimits m_Phi; double m_Lambda; }; diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp index b56e32ad..28747075 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp @@ -51,18 +51,18 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.32084455059221467, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.63670823381979202, RfDiff, 1e-6); - const double RbDiff = aResults->DiffDiff(Side::Back, PropertySimple::R); + const double RbDiff = aResults.DiffDiff(Side::Back, PropertySimple::R); EXPECT_NEAR(0.56030324576141499, RbDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); const auto size = aT.size(); @@ -179,7 +179,7 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) } // Test first row for reflectance matrix - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults.clear(); correctResults.push_back(0.177733); @@ -237,7 +237,7 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) } // Test first row for reflectance matrix - auto aRb = aResults->getMatrix(Side::Back, PropertySimple::R); + auto aRb = aResults.getMatrix(Side::Back, PropertySimple::R); correctResults.clear(); correctResults.push_back(0.156405); diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp index 9db392ea..233352c5 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp @@ -51,18 +51,18 @@ TEST_F(TestCircularPerforatedShade2, TestSolarProperties) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.2, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.8, RfDiff, 1e-6); - const double RbDiff = aResults->DiffDiff(Side::Back, PropertySimple::R); + const double RbDiff = aResults.DiffDiff(Side::Back, PropertySimple::R); EXPECT_NEAR(0.8, RbDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); const auto size = aT.size(); @@ -108,7 +108,7 @@ TEST_F(TestCircularPerforatedShade2, TestSolarProperties) } // Test first row for reflectance matrix - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults = {0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, @@ -130,7 +130,7 @@ TEST_F(TestCircularPerforatedShade2, TestSolarProperties) } // Test first row for reflectance matrix - auto aRb = aResults->getMatrix(Side::Back, PropertySimple::R); + auto aRb = aResults.getMatrix(Side::Back, PropertySimple::R); correctResults = {0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, 0.254648, diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp index fc363ff2..6c722a0c 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp @@ -58,28 +58,27 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa std::shared_ptr aLayer = getLayer(); - std::shared_ptr>> aResults = - aLayer->getWavelengthResults(); + std::vector aResults = aLayer->getWavelengthResults(); const auto wavelengths{aLayer->getBandWavelengths()}; const std::vector correctWavelengths{0.3, 0.38, 0.780002, 2.5}; EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); - for(size_t i =0u; i < correctWavelengths.size(); ++i) + for(size_t i = 0u; i < correctWavelengths.size(); ++i) { EXPECT_NEAR(wavelengths[i], correctWavelengths[i], 1e-6); } size_t correctSize = correctWavelengths.size(); - EXPECT_EQ(correctSize, aResults->size()); + EXPECT_EQ(correctSize, aResults.size()); /////////////////////////////////////////////////////////////////////// // Wavelength number 1 /////////////////////////////////////////////////////////////////////// - auto aT = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults[0].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size_t size = aT.size(); @@ -104,7 +103,7 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa } // Front reflectance - auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults[0].getMatrix(Side::Front, PropertySimple::R); calculatedResults.clear(); correctResults = {0.188652, 0.194951, 0.194951, 0.194951, 0.194951, 0.194951, 0.194951, @@ -129,7 +128,7 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Wavelength number 2 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[1].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); @@ -154,7 +153,7 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa } // Front reflectance - aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[1].getMatrix(Side::Front, PropertySimple::R); calculatedResults.clear(); correctResults = {0.142186, 0.146934, 0.146934, 0.146934, 0.146934, 0.146934, 0.146934, @@ -179,19 +178,19 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Wavelength number 3 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[2].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); calculatedResults.clear(); - correctResults = { - 3.324467, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, - 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, - 2.599524, 2.599524, 2.599524, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, - 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 0.001248, 0.001248, 0.001248, - 0.001248, 0.001248, 0.001248, 0.001248, 0.001248}; + correctResults = {3.324467, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, + 3.234713, 3.234713, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, + 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, + 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, + 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 0.001248, 0.001248, + 0.001248, 0.001248, 0.001248, 0.001248, 0.001248, 0.001248}; for(size_t i = 0; i < size; ++i) { @@ -205,7 +204,7 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa } // Front reflectance - aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[2].getMatrix(Side::Front, PropertySimple::R); calculatedResults.clear(); @@ -231,19 +230,19 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa // Wavelength number 4 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[3].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); calculatedResults.clear(); - correctResults = { - 3.324467, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, - 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, - 2.599524, 2.599524, 2.599524, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, - 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 0.001248, 0.001248, 0.001248, - 0.001248, 0.001248, 0.001248, 0.001248, 0.001248}; + correctResults = {3.324467, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, 3.234713, + 3.234713, 3.234713, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, + 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, 2.599524, + 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, + 1.953460, 1.953460, 1.953460, 1.953460, 1.953460, 0.001248, 0.001248, + 0.001248, 0.001248, 0.001248, 0.001248, 0.001248, 0.001248}; for(size_t i = 0; i < size; ++i) { @@ -257,7 +256,7 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa } // Front reflectance - aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[3].getMatrix(Side::Front, PropertySimple::R); calculatedResults.clear(); diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp index 88cb79bc..7d03848b 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp @@ -51,20 +51,20 @@ TEST_F(TestCircularPerforatedShadeNFRC18000, TestSolarProperties) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.257367, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.101741, RfDiff, 1e-6); - const double RbDiff = aResults->DiffDiff(Side::Back, PropertySimple::R); + const double RbDiff = aResults.DiffDiff(Side::Back, PropertySimple::R); EXPECT_NEAR(0.118821, RbDiff, 1e-6); - const double absfDiff = aResults->AbsDiffDiff(FenestrationCommon::Side::Front); + const double absfDiff = aResults.AbsDiffDiff(FenestrationCommon::Side::Front); EXPECT_NEAR(0.640892, absfDiff, 1e-6); - const double absbDiff = aResults->AbsDiffDiff(FenestrationCommon::Side::Back); + const double absbDiff = aResults.AbsDiffDiff(FenestrationCommon::Side::Back); EXPECT_NEAR(0.623812, absbDiff, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp index f5197c8c..0324d282 100644 --- a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp @@ -43,15 +43,15 @@ TEST_F(TestPerfectDiffuseShade1, TestSolarProperties) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.000000000, tauDiff, 1e-6); - double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.550000000, RfDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix const size_t size = aT.size(); @@ -70,7 +70,7 @@ TEST_F(TestPerfectDiffuseShade1, TestSolarProperties) EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); } - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults = {0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, 0.175070, diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp index 2e3b52f1..1745c9a3 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp @@ -51,24 +51,24 @@ TEST_F(TestRectangularPerforatedShade1, TestSolarProperties) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.041876313, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.670686365, RfDiff, 1e-6); const auto theta{0}; const auto phi{0}; - const auto tauDirHem{aResults->DirHem(Side::Front, PropertySimple::T, theta, phi)}; + const auto tauDirHem{aResults.DirHem(Side::Front, PropertySimple::T, theta, phi)}; EXPECT_NEAR(0.055556, tauDirHem, 1e-6); - const double RfDirHem{aResults->DirHem(Side::Front, PropertySimple::R, theta, phi)}; + const double RfDirHem{aResults.DirHem(Side::Front, PropertySimple::R, theta, phi)}; EXPECT_NEAR(0.661111, RfDirHem, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix const size_t size = aT.size(); @@ -128,7 +128,7 @@ TEST_F(TestRectangularPerforatedShade1, TestSolarProperties) EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); } - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults.clear(); correctResults.push_back(0.210438); diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp index 12af3cae..235d69df 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp @@ -51,18 +51,18 @@ TEST_F(TestRectangularPerforatedShade2, TestSolarProperties) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.112843786, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.492864523, RfDiff, 1e-6); - const double RbDiff = aResults->DiffDiff(Side::Back, PropertySimple::R); + const double RbDiff = aResults.DiffDiff(Side::Back, PropertySimple::R); EXPECT_NEAR(0.591437306, RbDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); const size_t size = aT.size(); @@ -109,7 +109,7 @@ TEST_F(TestRectangularPerforatedShade2, TestSolarProperties) } // Test first row for reflectance matrix - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults = {0.146423, 0.152214, 0.152254, 0.150042, 0.152254, 0.152214, 0.152254, 0.150042, 0.152254, 0.159155, 0.158120, 0.156343, 0.154517, 0.156343, diff --git a/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp b/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp index bca1f44a..dd2aafc8 100644 --- a/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp @@ -97,7 +97,7 @@ TEST_F(SinglePaneBSDF_VenetianIR, TestBSDF1) { SCOPED_TRACE("Begin Test: Venetian IR."); - auto & aLayer = *getLayer().getResults(); + auto aLayer = getLayer().getResults(); const double tauDiff = aLayer.DiffDiff(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); diff --git a/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp index 9426f18b..023a4d42 100644 --- a/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp @@ -1,1029 +1,1038 @@ -#include -#include - -#include "WCESingleLayerOptics.hpp" -#include "WCESpectralAveraging.hpp" -#include "WCECommon.hpp" - - -using namespace SingleLayerOptics; -using namespace FenestrationCommon; -using namespace SpectralAveraging; - -class TestSpecularAngularLayer_102 : public testing::Test -{ -private: - std::shared_ptr m_Measurements; - std::shared_ptr m_Layer; - - CSeries loadSolarRadiationFile() - { - // Full ASTM E891-87 Table 1 (Solar radiation) - CSeries aSolarRadiation( - {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, - {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, - {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, - {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, - {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, - {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, - {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, - {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, - {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, - {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, - {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, - {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, - {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, - {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, - {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, - {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, - {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, - {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, - {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, - {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, - {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, - {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, - {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, - {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, - {4.0450, 6.9} - - }); - - return aSolarRadiation; - } - - std::shared_ptr getSample1() - { - const auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements0 = - std::make_shared(); - // incident angle = 0 - - aMeasurements0->addRecord(0.290, 0, 0.0481, 0.0481); - aMeasurements0->addRecord(0.295, 0, 0.0479, 0.0479); - aMeasurements0->addRecord(0.300, 0, 0.0476, 0.0476); - aMeasurements0->addRecord(0.305, 0, 0.0474, 0.0474); - aMeasurements0->addRecord(0.310, 0.007, 0.0471, 0.0471); - aMeasurements0->addRecord(0.315, 0.035, 0.047, 0.047); - aMeasurements0->addRecord(0.320, 0.0975, 0.0472, 0.0472); - aMeasurements0->addRecord(0.325, 0.2099, 0.0487, 0.0487); - aMeasurements0->addRecord(0.330, 0.3497, 0.0525, 0.0525); - aMeasurements0->addRecord(0.335, 0.4865, 0.0581, 0.0581); - aMeasurements0->addRecord(0.340, 0.6057, 0.0644, 0.0644); - aMeasurements0->addRecord(0.345, 0.7035, 0.0706, 0.0706); - aMeasurements0->addRecord(0.350, 0.7687, 0.0751, 0.0751); - aMeasurements0->addRecord(0.355, 0.812, 0.0783, 0.0783); - aMeasurements0->addRecord(0.360, 0.8429, 0.0806, 0.0806); - aMeasurements0->addRecord(0.365, 0.862, 0.0819, 0.0819); - aMeasurements0->addRecord(0.370, 0.8678, 0.0821, 0.0821); - aMeasurements0->addRecord(0.375, 0.8672, 0.0819, 0.0819); - aMeasurements0->addRecord(0.380, 0.8554, 0.0806, 0.0806); - aMeasurements0->addRecord(0.385, 0.8696, 0.0816, 0.0816); - aMeasurements0->addRecord(0.390, 0.8804, 0.0823, 0.0823); - aMeasurements0->addRecord(0.395, 0.8884, 0.0828, 0.0828); - aMeasurements0->addRecord(0.400, 0.8924, 0.083, 0.083); - aMeasurements0->addRecord(0.410, 0.8944, 0.0828, 0.0828); - aMeasurements0->addRecord(0.420, 0.8921, 0.0823, 0.0823); - aMeasurements0->addRecord(0.430, 0.8914, 0.082, 0.082); - aMeasurements0->addRecord(0.440, 0.8896, 0.0815, 0.0815); - aMeasurements0->addRecord(0.450, 0.8933, 0.0816, 0.0816); - aMeasurements0->addRecord(0.460, 0.8972, 0.0817, 0.0817); - aMeasurements0->addRecord(0.470, 0.8991, 0.0816, 0.0816); - aMeasurements0->addRecord(0.480, 0.9013, 0.0816, 0.0816); - aMeasurements0->addRecord(0.490, 0.9026, 0.0815, 0.0815); - aMeasurements0->addRecord(0.500, 0.9026, 0.0813, 0.0813); - aMeasurements0->addRecord(0.510, 0.9031, 0.0811, 0.0811); - aMeasurements0->addRecord(0.520, 0.9025, 0.0809, 0.0809); - aMeasurements0->addRecord(0.530, 0.9028, 0.0808, 0.0808); - aMeasurements0->addRecord(0.540, 0.9033, 0.0807, 0.0807); - aMeasurements0->addRecord(0.550, 0.9013, 0.0804, 0.0804); - aMeasurements0->addRecord(0.560, 0.8999, 0.0802, 0.0802); - aMeasurements0->addRecord(0.570, 0.8986, 0.0799, 0.0799); - aMeasurements0->addRecord(0.580, 0.8975, 0.0797, 0.0797); - aMeasurements0->addRecord(0.590, 0.8939, 0.0793, 0.0793); - aMeasurements0->addRecord(0.600, 0.8919, 0.079, 0.079); - aMeasurements0->addRecord(0.610, 0.891, 0.0789, 0.0789); - aMeasurements0->addRecord(0.620, 0.8853, 0.0783, 0.0783); - aMeasurements0->addRecord(0.630, 0.8838, 0.0781, 0.0781); - aMeasurements0->addRecord(0.640, 0.8806, 0.0777, 0.0777); - aMeasurements0->addRecord(0.650, 0.8769, 0.0773, 0.0773); - aMeasurements0->addRecord(0.660, 0.8735, 0.077, 0.077); - aMeasurements0->addRecord(0.670, 0.8731, 0.0769, 0.0769); - aMeasurements0->addRecord(0.680, 0.8665, 0.0763, 0.0763); - aMeasurements0->addRecord(0.690, 0.8637, 0.076, 0.076); - aMeasurements0->addRecord(0.700, 0.8607, 0.0757, 0.0757); - aMeasurements0->addRecord(0.710, 0.8557, 0.0753, 0.0753); - aMeasurements0->addRecord(0.720, 0.8531, 0.075, 0.075); - aMeasurements0->addRecord(0.730, 0.8487, 0.0746, 0.0746); - aMeasurements0->addRecord(0.740, 0.8418, 0.074, 0.074); - aMeasurements0->addRecord(0.750, 0.8406, 0.0738, 0.0738); - aMeasurements0->addRecord(0.760, 0.8358, 0.0734, 0.0734); - aMeasurements0->addRecord(0.770, 0.8341, 0.0732, 0.0732); - aMeasurements0->addRecord(0.780, 0.8324, 0.073, 0.073); - aMeasurements0->addRecord(0.790, 0.8232, 0.0723, 0.0723); - aMeasurements0->addRecord(0.800, 0.8246, 0.0723, 0.0723); - aMeasurements0->addRecord(0.850, 0.8076, 0.0708, 0.0708); - aMeasurements0->addRecord(0.900, 0.8002, 0.07, 0.07); - aMeasurements0->addRecord(0.950, 0.7907, 0.0692, 0.0692); - aMeasurements0->addRecord(1.000, 0.7862, 0.0687, 0.0687); - aMeasurements0->addRecord(1.050, 0.7849, 0.0685, 0.0685); - aMeasurements0->addRecord(1.100, 0.7848, 0.0683, 0.0683); - aMeasurements0->addRecord(1.150, 0.7864, 0.0683, 0.0683); - aMeasurements0->addRecord(1.200, 0.7894, 0.0685, 0.0685); - aMeasurements0->addRecord(1.250, 0.7944, 0.0687, 0.0687); - aMeasurements0->addRecord(1.300, 0.8014, 0.0691, 0.0691); - aMeasurements0->addRecord(1.350, 0.8088, 0.0695, 0.0695); - aMeasurements0->addRecord(1.400, 0.8168, 0.07, 0.07); - aMeasurements0->addRecord(1.450, 0.8261, 0.0705, 0.0705); - aMeasurements0->addRecord(1.500, 0.8366, 0.0712, 0.0712); - aMeasurements0->addRecord(1.550, 0.8444, 0.0716, 0.0716); - aMeasurements0->addRecord(1.600, 0.8506, 0.0719, 0.0719); - aMeasurements0->addRecord(1.650, 0.853, 0.072, 0.072); - aMeasurements0->addRecord(1.700, 0.8527, 0.0719, 0.0719); - aMeasurements0->addRecord(1.750, 0.8532, 0.0718, 0.0718); - aMeasurements0->addRecord(1.800, 0.8504, 0.0714, 0.0714); - aMeasurements0->addRecord(1.850, 0.8488, 0.0712, 0.0712); - aMeasurements0->addRecord(1.900, 0.8523, 0.0713, 0.0713); - aMeasurements0->addRecord(1.950, 0.8497, 0.071, 0.071); - aMeasurements0->addRecord(2.000, 0.848, 0.0708, 0.0708); - aMeasurements0->addRecord(2.050, 0.8488, 0.0707, 0.0707); - aMeasurements0->addRecord(2.100, 0.8505, 0.0707, 0.0707); - aMeasurements0->addRecord(2.150, 0.8408, 0.0699, 0.0699); - aMeasurements0->addRecord(2.200, 0.8304, 0.0691, 0.0691); - aMeasurements0->addRecord(2.250, 0.8277, 0.0688, 0.0688); - aMeasurements0->addRecord(2.300, 0.8303, 0.0688, 0.0688); - aMeasurements0->addRecord(2.350, 0.834, 0.069, 0.069); - aMeasurements0->addRecord(2.400, 0.8236, 0.0681, 0.0681); - aMeasurements0->addRecord(2.450, 0.8225, 0.0679, 0.0679); - aMeasurements0->addRecord(2.500, 0.8184, 0.0675, 0.0675); - - std::shared_ptr aSample0 = - std::make_shared(aMeasurements0, aSolarRadiation); - std::shared_ptr aAngular0 = - std::make_shared(aSample0, 0.0); - - return aAngular0; - } - - std::shared_ptr getSample2() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements1 = - std::make_shared(); - // incident angle = 10 - - aMeasurements1->addRecord(0.290, 0, 0.0481, 0.0481); - aMeasurements1->addRecord(0.295, 0, 0.0479, 0.0479); - aMeasurements1->addRecord(0.300, 0, 0.0476, 0.0476); - aMeasurements1->addRecord(0.305, 0, 0.0474, 0.0474); - aMeasurements1->addRecord(0.310, 0.0068, 0.0471, 0.0471); - aMeasurements1->addRecord(0.315, 0.0343, 0.047, 0.047); - aMeasurements1->addRecord(0.320, 0.0961, 0.0472, 0.0472); - aMeasurements1->addRecord(0.325, 0.208, 0.0487, 0.0487); - aMeasurements1->addRecord(0.330, 0.3476, 0.0524, 0.0524); - aMeasurements1->addRecord(0.335, 0.4845, 0.058, 0.058); - aMeasurements1->addRecord(0.340, 0.6041, 0.0643, 0.0643); - aMeasurements1->addRecord(0.345, 0.7023, 0.0705, 0.0705); - aMeasurements1->addRecord(0.350, 0.7678, 0.0751, 0.0751); - aMeasurements1->addRecord(0.355, 0.8114, 0.0783, 0.0783); - aMeasurements1->addRecord(0.360, 0.8424, 0.0805, 0.0805); - aMeasurements1->addRecord(0.365, 0.8617, 0.0819, 0.0819); - aMeasurements1->addRecord(0.370, 0.8675, 0.0821, 0.0821); - aMeasurements1->addRecord(0.375, 0.8669, 0.0819, 0.0819); - aMeasurements1->addRecord(0.380, 0.8551, 0.0806, 0.0806); - aMeasurements1->addRecord(0.385, 0.8693, 0.0816, 0.0816); - aMeasurements1->addRecord(0.390, 0.8802, 0.0823, 0.0823); - aMeasurements1->addRecord(0.395, 0.8882, 0.0829, 0.0829); - aMeasurements1->addRecord(0.400, 0.8922, 0.083, 0.083); - aMeasurements1->addRecord(0.410, 0.8943, 0.0829, 0.0829); - aMeasurements1->addRecord(0.420, 0.8919, 0.0823, 0.0823); - aMeasurements1->addRecord(0.430, 0.8912, 0.082, 0.082); - aMeasurements1->addRecord(0.440, 0.8894, 0.0815, 0.0815); - aMeasurements1->addRecord(0.450, 0.8931, 0.0816, 0.0816); - aMeasurements1->addRecord(0.460, 0.8971, 0.0817, 0.0817); - aMeasurements1->addRecord(0.470, 0.8989, 0.0816, 0.0816); - aMeasurements1->addRecord(0.480, 0.9011, 0.0816, 0.0816); - aMeasurements1->addRecord(0.490, 0.9025, 0.0815, 0.0815); - aMeasurements1->addRecord(0.500, 0.9025, 0.0813, 0.0813); - aMeasurements1->addRecord(0.510, 0.903, 0.0812, 0.0812); - aMeasurements1->addRecord(0.520, 0.9024, 0.0809, 0.0809); - aMeasurements1->addRecord(0.530, 0.9027, 0.0808, 0.0808); - aMeasurements1->addRecord(0.540, 0.9032, 0.0807, 0.0807); - aMeasurements1->addRecord(0.550, 0.9011, 0.0804, 0.0804); - aMeasurements1->addRecord(0.560, 0.8998, 0.0802, 0.0802); - aMeasurements1->addRecord(0.570, 0.8985, 0.0799, 0.0799); - aMeasurements1->addRecord(0.580, 0.8974, 0.0797, 0.0797); - aMeasurements1->addRecord(0.590, 0.8937, 0.0793, 0.0793); - aMeasurements1->addRecord(0.600, 0.8917, 0.079, 0.079); - aMeasurements1->addRecord(0.610, 0.8908, 0.0789, 0.0789); - aMeasurements1->addRecord(0.620, 0.885, 0.0783, 0.0783); - aMeasurements1->addRecord(0.630, 0.8835, 0.0781, 0.0781); - aMeasurements1->addRecord(0.640, 0.8803, 0.0777, 0.0777); - aMeasurements1->addRecord(0.650, 0.8766, 0.0774, 0.0774); - aMeasurements1->addRecord(0.660, 0.8732, 0.077, 0.077); - aMeasurements1->addRecord(0.670, 0.8728, 0.0769, 0.0769); - aMeasurements1->addRecord(0.680, 0.8662, 0.0763, 0.0763); - aMeasurements1->addRecord(0.690, 0.8633, 0.076, 0.076); - aMeasurements1->addRecord(0.700, 0.8603, 0.0757, 0.0757); - aMeasurements1->addRecord(0.710, 0.8552, 0.0753, 0.0753); - aMeasurements1->addRecord(0.720, 0.8527, 0.075, 0.075); - aMeasurements1->addRecord(0.730, 0.8482, 0.0746, 0.0746); - aMeasurements1->addRecord(0.740, 0.8413, 0.074, 0.074); - aMeasurements1->addRecord(0.750, 0.8401, 0.0738, 0.0738); - aMeasurements1->addRecord(0.760, 0.8352, 0.0734, 0.0734); - aMeasurements1->addRecord(0.770, 0.8335, 0.0732, 0.0732); - aMeasurements1->addRecord(0.780, 0.8318, 0.073, 0.073); - aMeasurements1->addRecord(0.790, 0.8225, 0.0722, 0.0722); - aMeasurements1->addRecord(0.800, 0.824, 0.0723, 0.0723); - aMeasurements1->addRecord(0.850, 0.8069, 0.0708, 0.0708); - aMeasurements1->addRecord(0.900, 0.7994, 0.07, 0.07); - aMeasurements1->addRecord(0.950, 0.7899, 0.0691, 0.0691); - aMeasurements1->addRecord(1.000, 0.7854, 0.0686, 0.0686); - aMeasurements1->addRecord(1.050, 0.7841, 0.0684, 0.0684); - aMeasurements1->addRecord(1.100, 0.7839, 0.0683, 0.0683); - aMeasurements1->addRecord(1.150, 0.7856, 0.0683, 0.0683); - aMeasurements1->addRecord(1.200, 0.7886, 0.0684, 0.0684); - aMeasurements1->addRecord(1.250, 0.7936, 0.0687, 0.0687); - aMeasurements1->addRecord(1.300, 0.8006, 0.069, 0.069); - aMeasurements1->addRecord(1.350, 0.8081, 0.0695, 0.0695); - aMeasurements1->addRecord(1.400, 0.8162, 0.0699, 0.0699); - aMeasurements1->addRecord(1.450, 0.8255, 0.0705, 0.0705); - aMeasurements1->addRecord(1.500, 0.836, 0.0711, 0.0711); - aMeasurements1->addRecord(1.550, 0.8439, 0.0716, 0.0716); - aMeasurements1->addRecord(1.600, 0.8501, 0.0719, 0.0719); - aMeasurements1->addRecord(1.650, 0.8525, 0.072, 0.072); - aMeasurements1->addRecord(1.700, 0.8522, 0.0719, 0.0719); - aMeasurements1->addRecord(1.750, 0.8527, 0.0718, 0.0718); - aMeasurements1->addRecord(1.800, 0.8499, 0.0714, 0.0714); - aMeasurements1->addRecord(1.850, 0.8483, 0.0712, 0.0712); - aMeasurements1->addRecord(1.900, 0.8518, 0.0713, 0.0713); - aMeasurements1->addRecord(1.950, 0.8492, 0.071, 0.071); - aMeasurements1->addRecord(2.000, 0.8475, 0.0708, 0.0708); - aMeasurements1->addRecord(2.050, 0.8483, 0.0707, 0.0707); - aMeasurements1->addRecord(2.100, 0.85, 0.0707, 0.0707); - aMeasurements1->addRecord(2.150, 0.8402, 0.0699, 0.0699); - aMeasurements1->addRecord(2.200, 0.8298, 0.069, 0.069); - aMeasurements1->addRecord(2.250, 0.8271, 0.0687, 0.0687); - aMeasurements1->addRecord(2.300, 0.8297, 0.0688, 0.0688); - aMeasurements1->addRecord(2.350, 0.8334, 0.069, 0.069); - aMeasurements1->addRecord(2.400, 0.823, 0.0681, 0.0681); - aMeasurements1->addRecord(2.450, 0.8218, 0.0679, 0.0679); - aMeasurements1->addRecord(2.500, 0.8176, 0.0675, 0.0675); - - std::shared_ptr aSample1 = - std::make_shared(aMeasurements1, aSolarRadiation); - std::shared_ptr aAngular1 = - std::make_shared(aSample1, 10.0); - - return aAngular1; - } - - std::shared_ptr getSample3() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements4 = - std::make_shared(); - // incident angle = 40 - - aMeasurements4->addRecord(0.290, 0, 0.0993, 0.0993); - aMeasurements4->addRecord(0.295, 0, 0.099, 0.099); - aMeasurements4->addRecord(0.300, 0, 0.0986, 0.0986); - aMeasurements4->addRecord(0.305, 0, 0.0984, 0.0984); - aMeasurements4->addRecord(0.310, 0.0023, 0.098, 0.098); - aMeasurements4->addRecord(0.315, 0.0161, 0.0978, 0.0978); - aMeasurements4->addRecord(0.320, 0.0553, 0.0979, 0.0979); - aMeasurements4->addRecord(0.325, 0.1392, 0.0996, 0.0996); - aMeasurements4->addRecord(0.330, 0.2575, 0.1049, 0.1049); - aMeasurements4->addRecord(0.335, 0.3836, 0.1143, 0.1143); - aMeasurements4->addRecord(0.340, 0.5002, 0.1261, 0.1261); - aMeasurements4->addRecord(0.345, 0.5999, 0.1387, 0.1387); - aMeasurements4->addRecord(0.350, 0.6682, 0.1485, 0.1485); - aMeasurements4->addRecord(0.355, 0.7145, 0.1556, 0.1556); - aMeasurements4->addRecord(0.360, 0.7478, 0.1609, 0.1609); - aMeasurements4->addRecord(0.365, 0.7686, 0.1643, 0.1643); - aMeasurements4->addRecord(0.370, 0.775, 0.1651, 0.1651); - aMeasurements4->addRecord(0.375, 0.7743, 0.1647, 0.1647); - aMeasurements4->addRecord(0.380, 0.7614, 0.1622, 0.1622); - aMeasurements4->addRecord(0.385, 0.7769, 0.1646, 0.1646); - aMeasurements4->addRecord(0.390, 0.7887, 0.1665, 0.1665); - aMeasurements4->addRecord(0.395, 0.7975, 0.1678, 0.1678); - aMeasurements4->addRecord(0.400, 0.8019, 0.1684, 0.1684); - aMeasurements4->addRecord(0.410, 0.8042, 0.1684, 0.1684); - aMeasurements4->addRecord(0.420, 0.8015, 0.1675, 0.1675); - aMeasurements4->addRecord(0.430, 0.8008, 0.167, 0.167); - aMeasurements4->addRecord(0.440, 0.7988, 0.1663, 0.1663); - aMeasurements4->addRecord(0.450, 0.8028, 0.1668, 0.1668); - aMeasurements4->addRecord(0.460, 0.8073, 0.1673, 0.1673); - aMeasurements4->addRecord(0.470, 0.8093, 0.1674, 0.1674); - aMeasurements4->addRecord(0.480, 0.8117, 0.1675, 0.1675); - aMeasurements4->addRecord(0.490, 0.8132, 0.1675, 0.1675); - aMeasurements4->addRecord(0.500, 0.8132, 0.1673, 0.1673); - aMeasurements4->addRecord(0.510, 0.8138, 0.1672, 0.1672); - aMeasurements4->addRecord(0.520, 0.8131, 0.1668, 0.1668); - aMeasurements4->addRecord(0.530, 0.8135, 0.1667, 0.1667); - aMeasurements4->addRecord(0.540, 0.814, 0.1666, 0.1666); - aMeasurements4->addRecord(0.550, 0.8117, 0.1661, 0.1661); - aMeasurements4->addRecord(0.560, 0.8102, 0.1656, 0.1656); - aMeasurements4->addRecord(0.570, 0.8088, 0.1652, 0.1652); - aMeasurements4->addRecord(0.580, 0.8076, 0.1648, 0.1648); - aMeasurements4->addRecord(0.590, 0.8035, 0.164, 0.164); - aMeasurements4->addRecord(0.600, 0.8013, 0.1634, 0.1634); - aMeasurements4->addRecord(0.610, 0.8003, 0.1632, 0.1632); - aMeasurements4->addRecord(0.620, 0.794, 0.1619, 0.1619); - aMeasurements4->addRecord(0.630, 0.7923, 0.1615, 0.1615); - aMeasurements4->addRecord(0.640, 0.7888, 0.1608, 0.1608); - aMeasurements4->addRecord(0.650, 0.7848, 0.16, 0.16); - aMeasurements4->addRecord(0.660, 0.781, 0.1593, 0.1593); - aMeasurements4->addRecord(0.670, 0.7806, 0.1591, 0.1591); - aMeasurements4->addRecord(0.680, 0.7733, 0.1578, 0.1578); - aMeasurements4->addRecord(0.690, 0.7702, 0.1571, 0.1571); - aMeasurements4->addRecord(0.700, 0.7669, 0.1565, 0.1565); - aMeasurements4->addRecord(0.710, 0.7614, 0.1555, 0.1555); - aMeasurements4->addRecord(0.720, 0.7586, 0.155, 0.155); - aMeasurements4->addRecord(0.730, 0.7537, 0.1541, 0.1541); - aMeasurements4->addRecord(0.740, 0.7462, 0.1528, 0.1528); - aMeasurements4->addRecord(0.750, 0.7449, 0.1525, 0.1525); - aMeasurements4->addRecord(0.760, 0.7396, 0.1515, 0.1515); - aMeasurements4->addRecord(0.770, 0.7378, 0.1512, 0.1512); - aMeasurements4->addRecord(0.780, 0.7359, 0.1508, 0.1508); - aMeasurements4->addRecord(0.790, 0.7259, 0.1491, 0.1491); - aMeasurements4->addRecord(0.800, 0.7275, 0.1493, 0.1493); - aMeasurements4->addRecord(0.850, 0.709, 0.1461, 0.1461); - aMeasurements4->addRecord(0.900, 0.7009, 0.1445, 0.1445); - aMeasurements4->addRecord(0.950, 0.6907, 0.1428, 0.1428); - aMeasurements4->addRecord(1.000, 0.6858, 0.1418, 0.1418); - aMeasurements4->addRecord(1.050, 0.6844, 0.1415, 0.1415); - aMeasurements4->addRecord(1.100, 0.6843, 0.1413, 0.1413); - aMeasurements4->addRecord(1.150, 0.686, 0.1414, 0.1414); - aMeasurements4->addRecord(1.200, 0.6892, 0.1418, 0.1418); - aMeasurements4->addRecord(1.250, 0.6946, 0.1424, 0.1424); - aMeasurements4->addRecord(1.300, 0.7021, 0.1434, 0.1434); - aMeasurements4->addRecord(1.350, 0.7101, 0.1445, 0.1445); - aMeasurements4->addRecord(1.400, 0.7188, 0.1457, 0.1457); - aMeasurements4->addRecord(1.450, 0.729, 0.1471, 0.1471); - aMeasurements4->addRecord(1.500, 0.7404, 0.1488, 0.1488); - aMeasurements4->addRecord(1.550, 0.7489, 0.15, 0.15); - aMeasurements4->addRecord(1.600, 0.7557, 0.1509, 0.1509); - aMeasurements4->addRecord(1.650, 0.7583, 0.1512, 0.1512); - aMeasurements4->addRecord(1.700, 0.758, 0.151, 0.151); - aMeasurements4->addRecord(1.750, 0.7585, 0.1509, 0.1509); - aMeasurements4->addRecord(1.800, 0.7554, 0.1503, 0.1503); - aMeasurements4->addRecord(1.850, 0.7537, 0.1498, 0.1498); - aMeasurements4->addRecord(1.900, 0.7575, 0.1503, 0.1503); - aMeasurements4->addRecord(1.950, 0.7546, 0.1497, 0.1497); - aMeasurements4->addRecord(2.000, 0.7528, 0.1492, 0.1492); - aMeasurements4->addRecord(2.050, 0.7536, 0.1492, 0.1492); - aMeasurements4->addRecord(2.100, 0.7555, 0.1494, 0.1494); - aMeasurements4->addRecord(2.150, 0.7449, 0.1475, 0.1475); - aMeasurements4->addRecord(2.200, 0.7335, 0.1456, 0.1456); - aMeasurements4->addRecord(2.250, 0.7305, 0.145, 0.145); - aMeasurements4->addRecord(2.300, 0.7334, 0.1453, 0.1453); - aMeasurements4->addRecord(2.350, 0.7374, 0.1458, 0.1458); - aMeasurements4->addRecord(2.400, 0.7261, 0.1439, 0.1439); - aMeasurements4->addRecord(2.450, 0.7248, 0.1436, 0.1436); - aMeasurements4->addRecord(2.500, 0.7203, 0.1427, 0.1427); - - std::shared_ptr aSample4 = - std::make_shared(aMeasurements4, aSolarRadiation); - std::shared_ptr aAngular4 = - std::make_shared(aSample4, 40.0); - - return aAngular4; - } - - std::shared_ptr getSample4() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements9 = - std::make_shared(); - // incident angle = 90 - aMeasurements9->addRecord(0.290, 0, 1, 1); - aMeasurements9->addRecord(0.295, 0, 1, 1); - aMeasurements9->addRecord(0.300, 0, 1, 1); - aMeasurements9->addRecord(0.305, 0, 1, 1); - aMeasurements9->addRecord(0.310, 0, 1, 1); - aMeasurements9->addRecord(0.315, 0, 1, 1); - aMeasurements9->addRecord(0.320, 0, 1, 1); - aMeasurements9->addRecord(0.325, 0, 1, 1); - aMeasurements9->addRecord(0.330, 0, 1, 1); - aMeasurements9->addRecord(0.335, 0, 1, 1); - aMeasurements9->addRecord(0.340, 0, 1, 1); - aMeasurements9->addRecord(0.345, 0, 1, 1); - aMeasurements9->addRecord(0.350, 0, 1, 1); - aMeasurements9->addRecord(0.355, 0, 1, 1); - aMeasurements9->addRecord(0.360, 0, 1, 1); - aMeasurements9->addRecord(0.365, 0, 1, 1); - aMeasurements9->addRecord(0.370, 0, 1, 1); - aMeasurements9->addRecord(0.375, 0, 1, 1); - aMeasurements9->addRecord(0.380, 0, 1, 1); - aMeasurements9->addRecord(0.385, 0, 1, 1); - aMeasurements9->addRecord(0.390, 0, 1, 1); - aMeasurements9->addRecord(0.395, 0, 1, 1); - aMeasurements9->addRecord(0.400, 0, 1, 1); - aMeasurements9->addRecord(0.410, 0, 1, 1); - aMeasurements9->addRecord(0.420, 0, 1, 1); - aMeasurements9->addRecord(0.430, 0, 1, 1); - aMeasurements9->addRecord(0.440, 0, 1, 1); - aMeasurements9->addRecord(0.450, 0, 1, 1); - aMeasurements9->addRecord(0.460, 0, 1, 1); - aMeasurements9->addRecord(0.470, 0, 1, 1); - aMeasurements9->addRecord(0.480, 0, 1, 1); - aMeasurements9->addRecord(0.490, 0, 1, 1); - aMeasurements9->addRecord(0.500, 0, 1, 1); - aMeasurements9->addRecord(0.510, 0, 1, 1); - aMeasurements9->addRecord(0.520, 0, 1, 1); - aMeasurements9->addRecord(0.530, 0, 1, 1); - aMeasurements9->addRecord(0.540, 0, 1, 1); - aMeasurements9->addRecord(0.550, 0, 1, 1); - aMeasurements9->addRecord(0.560, 0, 1, 1); - aMeasurements9->addRecord(0.570, 0, 1, 1); - aMeasurements9->addRecord(0.580, 0, 1, 1); - aMeasurements9->addRecord(0.590, 0, 1, 1); - aMeasurements9->addRecord(0.600, 0, 1, 1); - aMeasurements9->addRecord(0.610, 0, 1, 1); - aMeasurements9->addRecord(0.620, 0, 1, 1); - aMeasurements9->addRecord(0.630, 0, 1, 1); - aMeasurements9->addRecord(0.640, 0, 1, 1); - aMeasurements9->addRecord(0.650, 0, 1, 1); - aMeasurements9->addRecord(0.660, 0, 1, 1); - aMeasurements9->addRecord(0.670, 0, 1, 1); - aMeasurements9->addRecord(0.680, 0, 1, 1); - aMeasurements9->addRecord(0.690, 0, 1, 1); - aMeasurements9->addRecord(0.700, 0, 1, 1); - aMeasurements9->addRecord(0.710, 0, 1, 1); - aMeasurements9->addRecord(0.720, 0, 1, 1); - aMeasurements9->addRecord(0.730, 0, 1, 1); - aMeasurements9->addRecord(0.740, 0, 1, 1); - aMeasurements9->addRecord(0.750, 0, 1, 1); - aMeasurements9->addRecord(0.760, 0, 1, 1); - aMeasurements9->addRecord(0.770, 0, 1, 1); - aMeasurements9->addRecord(0.780, 0, 1, 1); - aMeasurements9->addRecord(0.790, 0, 1, 1); - aMeasurements9->addRecord(0.800, 0, 1, 1); - aMeasurements9->addRecord(0.850, 0, 1, 1); - aMeasurements9->addRecord(0.900, 0, 1, 1); - aMeasurements9->addRecord(0.950, 0, 1, 1); - aMeasurements9->addRecord(1.000, 0, 1, 1); - aMeasurements9->addRecord(1.050, 0, 1, 1); - aMeasurements9->addRecord(1.100, 0, 1, 1); - aMeasurements9->addRecord(1.150, 0, 1, 1); - aMeasurements9->addRecord(1.200, 0, 1, 1); - aMeasurements9->addRecord(1.250, 0, 1, 1); - aMeasurements9->addRecord(1.300, 0, 1, 1); - aMeasurements9->addRecord(1.350, 0, 1, 1); - aMeasurements9->addRecord(1.400, 0, 1, 1); - aMeasurements9->addRecord(1.450, 0, 1, 1); - aMeasurements9->addRecord(1.500, 0, 1, 1); - aMeasurements9->addRecord(1.550, 0, 1, 1); - aMeasurements9->addRecord(1.600, 0, 1, 1); - aMeasurements9->addRecord(1.650, 0, 1, 1); - aMeasurements9->addRecord(1.700, 0, 1, 1); - aMeasurements9->addRecord(1.750, 0, 1, 1); - aMeasurements9->addRecord(1.800, 0, 1, 1); - aMeasurements9->addRecord(1.850, 0, 1, 1); - aMeasurements9->addRecord(1.900, 0, 1, 1); - aMeasurements9->addRecord(1.950, 0, 1, 1); - aMeasurements9->addRecord(2.000, 0, 1, 1); - aMeasurements9->addRecord(2.050, 0, 1, 1); - aMeasurements9->addRecord(2.100, 0, 1, 1); - aMeasurements9->addRecord(2.150, 0, 1, 1); - aMeasurements9->addRecord(2.200, 0, 1, 1); - aMeasurements9->addRecord(2.250, 0, 1, 1); - aMeasurements9->addRecord(2.300, 0, 1, 1); - aMeasurements9->addRecord(2.350, 0, 1, 1); - aMeasurements9->addRecord(2.400, 0, 1, 1); - aMeasurements9->addRecord(2.450, 0, 1, 1); - aMeasurements9->addRecord(2.500, 0, 1, 1); - - std::shared_ptr aSample9 = - std::make_shared(aMeasurements9, aSolarRadiation); - std::shared_ptr aAngular9 = - std::make_shared(aSample9, 90.0); - - return aAngular9; - } - - std::shared_ptr getSample09() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements09 = - std::make_shared(); - // incident angle = 0 - - aMeasurements09->addRecord(0.290, 0, 0.0481, 0.0481); - aMeasurements09->addRecord(0.295, 0, 0.0479, 0.0479); - aMeasurements09->addRecord(0.300, 0, 0.0476, 0.0476); - aMeasurements09->addRecord(0.305, 0, 0.0474, 0.0474); - aMeasurements09->addRecord(0.310, 0.007, 0.0471, 0.0471); - aMeasurements09->addRecord(0.315, 0.035, 0.047, 0.047); - aMeasurements09->addRecord(0.320, 0.0975, 0.0472, 0.0472); - aMeasurements09->addRecord(0.325, 0.2099, 0.0487, 0.0487); - aMeasurements09->addRecord(0.330, 0.3497, 0.0525, 0.0525); - aMeasurements09->addRecord(0.335, 0.4865, 0.0581, 0.0581); - aMeasurements09->addRecord(0.340, 0.6057, 0.0644, 0.0644); - aMeasurements09->addRecord(0.345, 0.7035, 0.0706, 0.0706); - aMeasurements09->addRecord(0.350, 0.7687, 0.0751, 0.0751); - aMeasurements09->addRecord(0.355, 0.812, 0.0783, 0.0783); - aMeasurements09->addRecord(0.360, 0.8429, 0.0806, 0.0806); - aMeasurements09->addRecord(0.365, 0.862, 0.0819, 0.0819); - aMeasurements09->addRecord(0.370, 0.8678, 0.0821, 0.0821); - aMeasurements09->addRecord(0.375, 0.8672, 0.0819, 0.0819); - aMeasurements09->addRecord(0.380, 0.8554, 0.0806, 0.0806); - aMeasurements09->addRecord(0.385, 0.8696, 0.0816, 0.0816); - aMeasurements09->addRecord(0.390, 0.8804, 0.0823, 0.0823); - aMeasurements09->addRecord(0.395, 0.8884, 0.0828, 0.0828); - aMeasurements09->addRecord(0.400, 0.8924, 0.083, 0.083); - aMeasurements09->addRecord(0.410, 0.8944, 0.0828, 0.0828); - aMeasurements09->addRecord(0.420, 0.8921, 0.0823, 0.0823); - aMeasurements09->addRecord(0.430, 0.8914, 0.082, 0.082); - aMeasurements09->addRecord(0.440, 0.8896, 0.0815, 0.0815); - aMeasurements09->addRecord(0.450, 0.8933, 0.0816, 0.0816); - aMeasurements09->addRecord(0.460, 0.8972, 0.0817, 0.0817); - aMeasurements09->addRecord(0.470, 0.8991, 0.0816, 0.0816); - aMeasurements09->addRecord(0.480, 0.9013, 0.0816, 0.0816); - aMeasurements09->addRecord(0.490, 0.9026, 0.0815, 0.0815); - aMeasurements09->addRecord(0.500, 0.9026, 0.0813, 0.0813); - aMeasurements09->addRecord(0.510, 0.9031, 0.0811, 0.0811); - aMeasurements09->addRecord(0.520, 0.9025, 0.0809, 0.0809); - aMeasurements09->addRecord(0.530, 0.9028, 0.0808, 0.0808); - aMeasurements09->addRecord(0.540, 0.9033, 0.0807, 0.0807); - aMeasurements09->addRecord(0.550, 0.9013, 0.0804, 0.0804); - aMeasurements09->addRecord(0.560, 0.8999, 0.0802, 0.0802); - aMeasurements09->addRecord(0.570, 0.8986, 0.0799, 0.0799); - aMeasurements09->addRecord(0.580, 0.8975, 0.0797, 0.0797); - aMeasurements09->addRecord(0.590, 0.8939, 0.0793, 0.0793); - aMeasurements09->addRecord(0.600, 0.8919, 0.079, 0.079); - aMeasurements09->addRecord(0.610, 0.891, 0.0789, 0.0789); - aMeasurements09->addRecord(0.620, 0.8853, 0.0783, 0.0783); - aMeasurements09->addRecord(0.630, 0.8838, 0.0781, 0.0781); - aMeasurements09->addRecord(0.640, 0.8806, 0.0777, 0.0777); - aMeasurements09->addRecord(0.650, 0.8769, 0.0773, 0.0773); - aMeasurements09->addRecord(0.660, 0.8735, 0.077, 0.077); - aMeasurements09->addRecord(0.670, 0.8731, 0.0769, 0.0769); - aMeasurements09->addRecord(0.680, 0.8665, 0.0763, 0.0763); - aMeasurements09->addRecord(0.690, 0.8637, 0.076, 0.076); - aMeasurements09->addRecord(0.700, 0.8607, 0.0757, 0.0757); - aMeasurements09->addRecord(0.710, 0.8557, 0.0753, 0.0753); - aMeasurements09->addRecord(0.720, 0.8531, 0.075, 0.075); - aMeasurements09->addRecord(0.730, 0.8487, 0.0746, 0.0746); - aMeasurements09->addRecord(0.740, 0.8418, 0.074, 0.074); - aMeasurements09->addRecord(0.750, 0.8406, 0.0738, 0.0738); - aMeasurements09->addRecord(0.760, 0.8358, 0.0734, 0.0734); - aMeasurements09->addRecord(0.770, 0.8341, 0.0732, 0.0732); - aMeasurements09->addRecord(0.780, 0.8324, 0.073, 0.073); - aMeasurements09->addRecord(0.790, 0.8232, 0.0723, 0.0723); - aMeasurements09->addRecord(0.800, 0.8246, 0.0723, 0.0723); - aMeasurements09->addRecord(0.850, 0.8076, 0.0708, 0.0708); - aMeasurements09->addRecord(0.900, 0.8002, 0.07, 0.07); - aMeasurements09->addRecord(0.950, 0.7907, 0.0692, 0.0692); - aMeasurements09->addRecord(1.000, 0.7862, 0.0687, 0.0687); - aMeasurements09->addRecord(1.050, 0.7849, 0.0685, 0.0685); - aMeasurements09->addRecord(1.100, 0.7848, 0.0683, 0.0683); - aMeasurements09->addRecord(1.150, 0.7864, 0.0683, 0.0683); - aMeasurements09->addRecord(1.200, 0.7894, 0.0685, 0.0685); - aMeasurements09->addRecord(1.250, 0.7944, 0.0687, 0.0687); - aMeasurements09->addRecord(1.300, 0.8014, 0.0691, 0.0691); - aMeasurements09->addRecord(1.350, 0.8088, 0.0695, 0.0695); - aMeasurements09->addRecord(1.400, 0.8168, 0.07, 0.07); - aMeasurements09->addRecord(1.450, 0.8261, 0.0705, 0.0705); - aMeasurements09->addRecord(1.500, 0.8366, 0.0712, 0.0712); - aMeasurements09->addRecord(1.550, 0.8444, 0.0716, 0.0716); - aMeasurements09->addRecord(1.600, 0.8506, 0.0719, 0.0719); - aMeasurements09->addRecord(1.650, 0.853, 0.072, 0.072); - aMeasurements09->addRecord(1.700, 0.8527, 0.0719, 0.0719); - aMeasurements09->addRecord(1.750, 0.8532, 0.0718, 0.0718); - aMeasurements09->addRecord(1.800, 0.8504, 0.0714, 0.0714); - aMeasurements09->addRecord(1.850, 0.8488, 0.0712, 0.0712); - aMeasurements09->addRecord(1.900, 0.8523, 0.0713, 0.0713); - aMeasurements09->addRecord(1.950, 0.8497, 0.071, 0.071); - aMeasurements09->addRecord(2.000, 0.848, 0.0708, 0.0708); - aMeasurements09->addRecord(2.050, 0.8488, 0.0707, 0.0707); - aMeasurements09->addRecord(2.100, 0.8505, 0.0707, 0.0707); - aMeasurements09->addRecord(2.150, 0.8408, 0.0699, 0.0699); - aMeasurements09->addRecord(2.200, 0.8304, 0.0691, 0.0691); - aMeasurements09->addRecord(2.250, 0.8277, 0.0688, 0.0688); - aMeasurements09->addRecord(2.300, 0.8303, 0.0688, 0.0688); - aMeasurements09->addRecord(2.350, 0.834, 0.069, 0.069); - aMeasurements09->addRecord(2.400, 0.8236, 0.0681, 0.0681); - aMeasurements09->addRecord(2.450, 0.8225, 0.0679, 0.0679); - aMeasurements09->addRecord(2.500, 0.8184, 0.0675, 0.0675); - - std::shared_ptr aSample09 = - std::make_shared(aMeasurements09, aSolarRadiation); - std::shared_ptr aAngular09 = - std::make_shared(aSample09, 90.0); - - return aAngular09; - } - -protected: - virtual void SetUp() - { - std::shared_ptr aAngular0 = getSample1(); - std::shared_ptr aAngular1 = getSample2(); - std::shared_ptr aAngular4 = getSample3(); - std::shared_ptr aAngular9 = getSample4(); - std::shared_ptr aAngular09 = getSample09(); - - // Need to extract common wavelengths - CCommonWavelengths aCommonWL; - std::vector wl0 = aAngular0->getWavelengthsFromSample(); - std::vector wl10 = aAngular1->getWavelengthsFromSample(); - std::vector wl40 = aAngular4->getWavelengthsFromSample(); - std::vector wl90 = aAngular9->getWavelengthsFromSample(); - aCommonWL.addWavelength(wl0); - aCommonWL.addWavelength(wl10); - aCommonWL.addWavelength(wl40); - aCommonWL.addWavelength(wl90); - std::vector commonWavelengths = - aCommonWL.getCombinedWavelengths(Combine::Interpolate); - - // Creating angular sample - - m_Measurements = std::make_shared(aAngular0, commonWavelengths); - m_Measurements->addMeasurement(aAngular1); - m_Measurements->addMeasurement(aAngular4); - m_Measurements->addMeasurement(aAngular9); - // m_Measurements->addMeasurement( aAngular09 ); - - std::shared_ptr aMaterial = - std::make_shared(m_Measurements, WavelengthRange::Solar); - - // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); - - // make layer - m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); - } - -public: - std::shared_ptr getLayer() - { - return m_Layer; - }; - - std::shared_ptr getMeasurements() const - { - return m_Measurements; - }; -}; - -TEST_F(TestSpecularAngularLayer_102, TestSpecular1) -{ - SCOPED_TRACE("Begin Test: Specular and Angular layer - BSDF."); - - std::shared_ptr aLayer = getLayer(); - - std::shared_ptr aResults = aLayer->getResults(); - - double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); - EXPECT_NEAR(0.64541405979702648, tauDiff, 1e-6); - - double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); - EXPECT_NEAR(0.272951100863078, RfDiff, 1e-6); - - double theta = 35; - double phi = 58; - - double tauHem = aResults->DirHem(Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.780630538026433, tauHem, 1e-6); - - double tauDir = aResults->DirDir(Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.780630538026433, tauDir, 1e-6); - - /* std::shared_ptr< SquareMatrix > aT = aResults->getMatrix( Side::Front, PropertySimple::T ); - - - // Test only diagonal of transmittance matrix - size_t size = aT->getSize(); - - - std::vector< double > correctResults; - correctResults.push_back( 34.940061244564802 ); - correctResults.push_back( 35.727444960862350 ); - correctResults.push_back( 35.727444960862350 ); - correctResults.push_back( 35.727444960862350 ); - correctResults.push_back( 35.727444960862350 ); - correctResults.push_back( 35.727444960862350 ); - correctResults.push_back( 35.727444960862350 ); - correctResults.push_back( 35.727444960862350 ); - correctResults.push_back( 35.727444960862350 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 37.933187566186469 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 35.009611836870832 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 36.522068529403214 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 35.586788153437524 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 38.033919314642546 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 29.061194222087263 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - correctResults.push_back( 16.978250544025638 ); - - - std::vector< double > calculatedResults; - for( size_t i = 0; i < size; ++i ) { - calculatedResults.push_back( (*aT)[i][i] ); - } - - - EXPECT_EQ( correctResults.size(), calculatedResults.size() ); - for( size_t i = 0; i < size; ++i ) { - EXPECT_NEAR( correctResults[i], calculatedResults[i], 1e-6 ); - } - - - // Front reflectance - std::shared_ptr< SquareMatrix > aRf = aResults->getMatrix( Side::Front, PropertySimple::R ); - - - correctResults.clear(); - calculatedResults.clear(); - - - correctResults.push_back( 3.1351336407416635 ); - correctResults.push_back( 3.2072370120929721 ); - correctResults.push_back( 3.2072370120929721 ); - correctResults.push_back( 3.2072370120929721 ); - correctResults.push_back( 3.2072370120929721 ); - correctResults.push_back( 3.2072370120929721 ); - correctResults.push_back( 3.2072370120929721 ); - correctResults.push_back( 3.2072370120929721 ); - correctResults.push_back( 3.2072370120929721 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.4246526776043713 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.2466935886549604 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 3.6858547275750588 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 4.4320169592146170 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 7.2672051285243091 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 11.531318187987335 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - correctResults.push_back( 34.322921163935874 ); - - - for( size_t i = 0; i < size; ++i ) { - calculatedResults.push_back( (*aRf)[i][i] ); - } - - - EXPECT_EQ( correctResults.size(), calculatedResults.size() ); - for( size_t i = 0; i < size; ++i ) { - EXPECT_NEAR( correctResults[i], calculatedResults[i], 1e-6 ); - } */ -} +#include +#include + +#include "WCESingleLayerOptics.hpp" +#include "WCESpectralAveraging.hpp" +#include "WCECommon.hpp" + + +using namespace SingleLayerOptics; +using namespace FenestrationCommon; +using namespace SpectralAveraging; + +class TestSpecularAngularLayer_102 : public testing::Test +{ +private: + std::shared_ptr m_Measurements; + std::shared_ptr m_Layer; + + CSeries loadSolarRadiationFile() + { + // Full ASTM E891-87 Table 1 (Solar radiation) + CSeries aSolarRadiation( + {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, + {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, + {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, + {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, + {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, + {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, + {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, + {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, + {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, + {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, + {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, + {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, + {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, + {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, + {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, + {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, + {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, + {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, + {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, + {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, + {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, + {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, + {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, + {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, + {4.0450, 6.9} + + }); + + return aSolarRadiation; + } + + std::shared_ptr getSample1() + { + const auto aSolarRadiation = loadSolarRadiationFile(); + + std::shared_ptr aMeasurements0 = + std::make_shared(); + // incident angle = 0 + + aMeasurements0->addRecord(0.290, 0, 0.0481, 0.0481); + aMeasurements0->addRecord(0.295, 0, 0.0479, 0.0479); + aMeasurements0->addRecord(0.300, 0, 0.0476, 0.0476); + aMeasurements0->addRecord(0.305, 0, 0.0474, 0.0474); + aMeasurements0->addRecord(0.310, 0.007, 0.0471, 0.0471); + aMeasurements0->addRecord(0.315, 0.035, 0.047, 0.047); + aMeasurements0->addRecord(0.320, 0.0975, 0.0472, 0.0472); + aMeasurements0->addRecord(0.325, 0.2099, 0.0487, 0.0487); + aMeasurements0->addRecord(0.330, 0.3497, 0.0525, 0.0525); + aMeasurements0->addRecord(0.335, 0.4865, 0.0581, 0.0581); + aMeasurements0->addRecord(0.340, 0.6057, 0.0644, 0.0644); + aMeasurements0->addRecord(0.345, 0.7035, 0.0706, 0.0706); + aMeasurements0->addRecord(0.350, 0.7687, 0.0751, 0.0751); + aMeasurements0->addRecord(0.355, 0.812, 0.0783, 0.0783); + aMeasurements0->addRecord(0.360, 0.8429, 0.0806, 0.0806); + aMeasurements0->addRecord(0.365, 0.862, 0.0819, 0.0819); + aMeasurements0->addRecord(0.370, 0.8678, 0.0821, 0.0821); + aMeasurements0->addRecord(0.375, 0.8672, 0.0819, 0.0819); + aMeasurements0->addRecord(0.380, 0.8554, 0.0806, 0.0806); + aMeasurements0->addRecord(0.385, 0.8696, 0.0816, 0.0816); + aMeasurements0->addRecord(0.390, 0.8804, 0.0823, 0.0823); + aMeasurements0->addRecord(0.395, 0.8884, 0.0828, 0.0828); + aMeasurements0->addRecord(0.400, 0.8924, 0.083, 0.083); + aMeasurements0->addRecord(0.410, 0.8944, 0.0828, 0.0828); + aMeasurements0->addRecord(0.420, 0.8921, 0.0823, 0.0823); + aMeasurements0->addRecord(0.430, 0.8914, 0.082, 0.082); + aMeasurements0->addRecord(0.440, 0.8896, 0.0815, 0.0815); + aMeasurements0->addRecord(0.450, 0.8933, 0.0816, 0.0816); + aMeasurements0->addRecord(0.460, 0.8972, 0.0817, 0.0817); + aMeasurements0->addRecord(0.470, 0.8991, 0.0816, 0.0816); + aMeasurements0->addRecord(0.480, 0.9013, 0.0816, 0.0816); + aMeasurements0->addRecord(0.490, 0.9026, 0.0815, 0.0815); + aMeasurements0->addRecord(0.500, 0.9026, 0.0813, 0.0813); + aMeasurements0->addRecord(0.510, 0.9031, 0.0811, 0.0811); + aMeasurements0->addRecord(0.520, 0.9025, 0.0809, 0.0809); + aMeasurements0->addRecord(0.530, 0.9028, 0.0808, 0.0808); + aMeasurements0->addRecord(0.540, 0.9033, 0.0807, 0.0807); + aMeasurements0->addRecord(0.550, 0.9013, 0.0804, 0.0804); + aMeasurements0->addRecord(0.560, 0.8999, 0.0802, 0.0802); + aMeasurements0->addRecord(0.570, 0.8986, 0.0799, 0.0799); + aMeasurements0->addRecord(0.580, 0.8975, 0.0797, 0.0797); + aMeasurements0->addRecord(0.590, 0.8939, 0.0793, 0.0793); + aMeasurements0->addRecord(0.600, 0.8919, 0.079, 0.079); + aMeasurements0->addRecord(0.610, 0.891, 0.0789, 0.0789); + aMeasurements0->addRecord(0.620, 0.8853, 0.0783, 0.0783); + aMeasurements0->addRecord(0.630, 0.8838, 0.0781, 0.0781); + aMeasurements0->addRecord(0.640, 0.8806, 0.0777, 0.0777); + aMeasurements0->addRecord(0.650, 0.8769, 0.0773, 0.0773); + aMeasurements0->addRecord(0.660, 0.8735, 0.077, 0.077); + aMeasurements0->addRecord(0.670, 0.8731, 0.0769, 0.0769); + aMeasurements0->addRecord(0.680, 0.8665, 0.0763, 0.0763); + aMeasurements0->addRecord(0.690, 0.8637, 0.076, 0.076); + aMeasurements0->addRecord(0.700, 0.8607, 0.0757, 0.0757); + aMeasurements0->addRecord(0.710, 0.8557, 0.0753, 0.0753); + aMeasurements0->addRecord(0.720, 0.8531, 0.075, 0.075); + aMeasurements0->addRecord(0.730, 0.8487, 0.0746, 0.0746); + aMeasurements0->addRecord(0.740, 0.8418, 0.074, 0.074); + aMeasurements0->addRecord(0.750, 0.8406, 0.0738, 0.0738); + aMeasurements0->addRecord(0.760, 0.8358, 0.0734, 0.0734); + aMeasurements0->addRecord(0.770, 0.8341, 0.0732, 0.0732); + aMeasurements0->addRecord(0.780, 0.8324, 0.073, 0.073); + aMeasurements0->addRecord(0.790, 0.8232, 0.0723, 0.0723); + aMeasurements0->addRecord(0.800, 0.8246, 0.0723, 0.0723); + aMeasurements0->addRecord(0.850, 0.8076, 0.0708, 0.0708); + aMeasurements0->addRecord(0.900, 0.8002, 0.07, 0.07); + aMeasurements0->addRecord(0.950, 0.7907, 0.0692, 0.0692); + aMeasurements0->addRecord(1.000, 0.7862, 0.0687, 0.0687); + aMeasurements0->addRecord(1.050, 0.7849, 0.0685, 0.0685); + aMeasurements0->addRecord(1.100, 0.7848, 0.0683, 0.0683); + aMeasurements0->addRecord(1.150, 0.7864, 0.0683, 0.0683); + aMeasurements0->addRecord(1.200, 0.7894, 0.0685, 0.0685); + aMeasurements0->addRecord(1.250, 0.7944, 0.0687, 0.0687); + aMeasurements0->addRecord(1.300, 0.8014, 0.0691, 0.0691); + aMeasurements0->addRecord(1.350, 0.8088, 0.0695, 0.0695); + aMeasurements0->addRecord(1.400, 0.8168, 0.07, 0.07); + aMeasurements0->addRecord(1.450, 0.8261, 0.0705, 0.0705); + aMeasurements0->addRecord(1.500, 0.8366, 0.0712, 0.0712); + aMeasurements0->addRecord(1.550, 0.8444, 0.0716, 0.0716); + aMeasurements0->addRecord(1.600, 0.8506, 0.0719, 0.0719); + aMeasurements0->addRecord(1.650, 0.853, 0.072, 0.072); + aMeasurements0->addRecord(1.700, 0.8527, 0.0719, 0.0719); + aMeasurements0->addRecord(1.750, 0.8532, 0.0718, 0.0718); + aMeasurements0->addRecord(1.800, 0.8504, 0.0714, 0.0714); + aMeasurements0->addRecord(1.850, 0.8488, 0.0712, 0.0712); + aMeasurements0->addRecord(1.900, 0.8523, 0.0713, 0.0713); + aMeasurements0->addRecord(1.950, 0.8497, 0.071, 0.071); + aMeasurements0->addRecord(2.000, 0.848, 0.0708, 0.0708); + aMeasurements0->addRecord(2.050, 0.8488, 0.0707, 0.0707); + aMeasurements0->addRecord(2.100, 0.8505, 0.0707, 0.0707); + aMeasurements0->addRecord(2.150, 0.8408, 0.0699, 0.0699); + aMeasurements0->addRecord(2.200, 0.8304, 0.0691, 0.0691); + aMeasurements0->addRecord(2.250, 0.8277, 0.0688, 0.0688); + aMeasurements0->addRecord(2.300, 0.8303, 0.0688, 0.0688); + aMeasurements0->addRecord(2.350, 0.834, 0.069, 0.069); + aMeasurements0->addRecord(2.400, 0.8236, 0.0681, 0.0681); + aMeasurements0->addRecord(2.450, 0.8225, 0.0679, 0.0679); + aMeasurements0->addRecord(2.500, 0.8184, 0.0675, 0.0675); + + std::shared_ptr aSample0 = + std::make_shared(aMeasurements0, aSolarRadiation); + std::shared_ptr aAngular0 = + std::make_shared(aSample0, 0.0); + + return aAngular0; + } + + std::shared_ptr getSample2() + { + auto aSolarRadiation = loadSolarRadiationFile(); + + std::shared_ptr aMeasurements1 = + std::make_shared(); + // incident angle = 10 + + aMeasurements1->addRecord(0.290, 0, 0.0481, 0.0481); + aMeasurements1->addRecord(0.295, 0, 0.0479, 0.0479); + aMeasurements1->addRecord(0.300, 0, 0.0476, 0.0476); + aMeasurements1->addRecord(0.305, 0, 0.0474, 0.0474); + aMeasurements1->addRecord(0.310, 0.0068, 0.0471, 0.0471); + aMeasurements1->addRecord(0.315, 0.0343, 0.047, 0.047); + aMeasurements1->addRecord(0.320, 0.0961, 0.0472, 0.0472); + aMeasurements1->addRecord(0.325, 0.208, 0.0487, 0.0487); + aMeasurements1->addRecord(0.330, 0.3476, 0.0524, 0.0524); + aMeasurements1->addRecord(0.335, 0.4845, 0.058, 0.058); + aMeasurements1->addRecord(0.340, 0.6041, 0.0643, 0.0643); + aMeasurements1->addRecord(0.345, 0.7023, 0.0705, 0.0705); + aMeasurements1->addRecord(0.350, 0.7678, 0.0751, 0.0751); + aMeasurements1->addRecord(0.355, 0.8114, 0.0783, 0.0783); + aMeasurements1->addRecord(0.360, 0.8424, 0.0805, 0.0805); + aMeasurements1->addRecord(0.365, 0.8617, 0.0819, 0.0819); + aMeasurements1->addRecord(0.370, 0.8675, 0.0821, 0.0821); + aMeasurements1->addRecord(0.375, 0.8669, 0.0819, 0.0819); + aMeasurements1->addRecord(0.380, 0.8551, 0.0806, 0.0806); + aMeasurements1->addRecord(0.385, 0.8693, 0.0816, 0.0816); + aMeasurements1->addRecord(0.390, 0.8802, 0.0823, 0.0823); + aMeasurements1->addRecord(0.395, 0.8882, 0.0829, 0.0829); + aMeasurements1->addRecord(0.400, 0.8922, 0.083, 0.083); + aMeasurements1->addRecord(0.410, 0.8943, 0.0829, 0.0829); + aMeasurements1->addRecord(0.420, 0.8919, 0.0823, 0.0823); + aMeasurements1->addRecord(0.430, 0.8912, 0.082, 0.082); + aMeasurements1->addRecord(0.440, 0.8894, 0.0815, 0.0815); + aMeasurements1->addRecord(0.450, 0.8931, 0.0816, 0.0816); + aMeasurements1->addRecord(0.460, 0.8971, 0.0817, 0.0817); + aMeasurements1->addRecord(0.470, 0.8989, 0.0816, 0.0816); + aMeasurements1->addRecord(0.480, 0.9011, 0.0816, 0.0816); + aMeasurements1->addRecord(0.490, 0.9025, 0.0815, 0.0815); + aMeasurements1->addRecord(0.500, 0.9025, 0.0813, 0.0813); + aMeasurements1->addRecord(0.510, 0.903, 0.0812, 0.0812); + aMeasurements1->addRecord(0.520, 0.9024, 0.0809, 0.0809); + aMeasurements1->addRecord(0.530, 0.9027, 0.0808, 0.0808); + aMeasurements1->addRecord(0.540, 0.9032, 0.0807, 0.0807); + aMeasurements1->addRecord(0.550, 0.9011, 0.0804, 0.0804); + aMeasurements1->addRecord(0.560, 0.8998, 0.0802, 0.0802); + aMeasurements1->addRecord(0.570, 0.8985, 0.0799, 0.0799); + aMeasurements1->addRecord(0.580, 0.8974, 0.0797, 0.0797); + aMeasurements1->addRecord(0.590, 0.8937, 0.0793, 0.0793); + aMeasurements1->addRecord(0.600, 0.8917, 0.079, 0.079); + aMeasurements1->addRecord(0.610, 0.8908, 0.0789, 0.0789); + aMeasurements1->addRecord(0.620, 0.885, 0.0783, 0.0783); + aMeasurements1->addRecord(0.630, 0.8835, 0.0781, 0.0781); + aMeasurements1->addRecord(0.640, 0.8803, 0.0777, 0.0777); + aMeasurements1->addRecord(0.650, 0.8766, 0.0774, 0.0774); + aMeasurements1->addRecord(0.660, 0.8732, 0.077, 0.077); + aMeasurements1->addRecord(0.670, 0.8728, 0.0769, 0.0769); + aMeasurements1->addRecord(0.680, 0.8662, 0.0763, 0.0763); + aMeasurements1->addRecord(0.690, 0.8633, 0.076, 0.076); + aMeasurements1->addRecord(0.700, 0.8603, 0.0757, 0.0757); + aMeasurements1->addRecord(0.710, 0.8552, 0.0753, 0.0753); + aMeasurements1->addRecord(0.720, 0.8527, 0.075, 0.075); + aMeasurements1->addRecord(0.730, 0.8482, 0.0746, 0.0746); + aMeasurements1->addRecord(0.740, 0.8413, 0.074, 0.074); + aMeasurements1->addRecord(0.750, 0.8401, 0.0738, 0.0738); + aMeasurements1->addRecord(0.760, 0.8352, 0.0734, 0.0734); + aMeasurements1->addRecord(0.770, 0.8335, 0.0732, 0.0732); + aMeasurements1->addRecord(0.780, 0.8318, 0.073, 0.073); + aMeasurements1->addRecord(0.790, 0.8225, 0.0722, 0.0722); + aMeasurements1->addRecord(0.800, 0.824, 0.0723, 0.0723); + aMeasurements1->addRecord(0.850, 0.8069, 0.0708, 0.0708); + aMeasurements1->addRecord(0.900, 0.7994, 0.07, 0.07); + aMeasurements1->addRecord(0.950, 0.7899, 0.0691, 0.0691); + aMeasurements1->addRecord(1.000, 0.7854, 0.0686, 0.0686); + aMeasurements1->addRecord(1.050, 0.7841, 0.0684, 0.0684); + aMeasurements1->addRecord(1.100, 0.7839, 0.0683, 0.0683); + aMeasurements1->addRecord(1.150, 0.7856, 0.0683, 0.0683); + aMeasurements1->addRecord(1.200, 0.7886, 0.0684, 0.0684); + aMeasurements1->addRecord(1.250, 0.7936, 0.0687, 0.0687); + aMeasurements1->addRecord(1.300, 0.8006, 0.069, 0.069); + aMeasurements1->addRecord(1.350, 0.8081, 0.0695, 0.0695); + aMeasurements1->addRecord(1.400, 0.8162, 0.0699, 0.0699); + aMeasurements1->addRecord(1.450, 0.8255, 0.0705, 0.0705); + aMeasurements1->addRecord(1.500, 0.836, 0.0711, 0.0711); + aMeasurements1->addRecord(1.550, 0.8439, 0.0716, 0.0716); + aMeasurements1->addRecord(1.600, 0.8501, 0.0719, 0.0719); + aMeasurements1->addRecord(1.650, 0.8525, 0.072, 0.072); + aMeasurements1->addRecord(1.700, 0.8522, 0.0719, 0.0719); + aMeasurements1->addRecord(1.750, 0.8527, 0.0718, 0.0718); + aMeasurements1->addRecord(1.800, 0.8499, 0.0714, 0.0714); + aMeasurements1->addRecord(1.850, 0.8483, 0.0712, 0.0712); + aMeasurements1->addRecord(1.900, 0.8518, 0.0713, 0.0713); + aMeasurements1->addRecord(1.950, 0.8492, 0.071, 0.071); + aMeasurements1->addRecord(2.000, 0.8475, 0.0708, 0.0708); + aMeasurements1->addRecord(2.050, 0.8483, 0.0707, 0.0707); + aMeasurements1->addRecord(2.100, 0.85, 0.0707, 0.0707); + aMeasurements1->addRecord(2.150, 0.8402, 0.0699, 0.0699); + aMeasurements1->addRecord(2.200, 0.8298, 0.069, 0.069); + aMeasurements1->addRecord(2.250, 0.8271, 0.0687, 0.0687); + aMeasurements1->addRecord(2.300, 0.8297, 0.0688, 0.0688); + aMeasurements1->addRecord(2.350, 0.8334, 0.069, 0.069); + aMeasurements1->addRecord(2.400, 0.823, 0.0681, 0.0681); + aMeasurements1->addRecord(2.450, 0.8218, 0.0679, 0.0679); + aMeasurements1->addRecord(2.500, 0.8176, 0.0675, 0.0675); + + std::shared_ptr aSample1 = + std::make_shared(aMeasurements1, aSolarRadiation); + std::shared_ptr aAngular1 = + std::make_shared(aSample1, 10.0); + + return aAngular1; + } + + std::shared_ptr getSample3() + { + auto aSolarRadiation = loadSolarRadiationFile(); + + std::shared_ptr aMeasurements4 = + std::make_shared(); + // incident angle = 40 + + aMeasurements4->addRecord(0.290, 0, 0.0993, 0.0993); + aMeasurements4->addRecord(0.295, 0, 0.099, 0.099); + aMeasurements4->addRecord(0.300, 0, 0.0986, 0.0986); + aMeasurements4->addRecord(0.305, 0, 0.0984, 0.0984); + aMeasurements4->addRecord(0.310, 0.0023, 0.098, 0.098); + aMeasurements4->addRecord(0.315, 0.0161, 0.0978, 0.0978); + aMeasurements4->addRecord(0.320, 0.0553, 0.0979, 0.0979); + aMeasurements4->addRecord(0.325, 0.1392, 0.0996, 0.0996); + aMeasurements4->addRecord(0.330, 0.2575, 0.1049, 0.1049); + aMeasurements4->addRecord(0.335, 0.3836, 0.1143, 0.1143); + aMeasurements4->addRecord(0.340, 0.5002, 0.1261, 0.1261); + aMeasurements4->addRecord(0.345, 0.5999, 0.1387, 0.1387); + aMeasurements4->addRecord(0.350, 0.6682, 0.1485, 0.1485); + aMeasurements4->addRecord(0.355, 0.7145, 0.1556, 0.1556); + aMeasurements4->addRecord(0.360, 0.7478, 0.1609, 0.1609); + aMeasurements4->addRecord(0.365, 0.7686, 0.1643, 0.1643); + aMeasurements4->addRecord(0.370, 0.775, 0.1651, 0.1651); + aMeasurements4->addRecord(0.375, 0.7743, 0.1647, 0.1647); + aMeasurements4->addRecord(0.380, 0.7614, 0.1622, 0.1622); + aMeasurements4->addRecord(0.385, 0.7769, 0.1646, 0.1646); + aMeasurements4->addRecord(0.390, 0.7887, 0.1665, 0.1665); + aMeasurements4->addRecord(0.395, 0.7975, 0.1678, 0.1678); + aMeasurements4->addRecord(0.400, 0.8019, 0.1684, 0.1684); + aMeasurements4->addRecord(0.410, 0.8042, 0.1684, 0.1684); + aMeasurements4->addRecord(0.420, 0.8015, 0.1675, 0.1675); + aMeasurements4->addRecord(0.430, 0.8008, 0.167, 0.167); + aMeasurements4->addRecord(0.440, 0.7988, 0.1663, 0.1663); + aMeasurements4->addRecord(0.450, 0.8028, 0.1668, 0.1668); + aMeasurements4->addRecord(0.460, 0.8073, 0.1673, 0.1673); + aMeasurements4->addRecord(0.470, 0.8093, 0.1674, 0.1674); + aMeasurements4->addRecord(0.480, 0.8117, 0.1675, 0.1675); + aMeasurements4->addRecord(0.490, 0.8132, 0.1675, 0.1675); + aMeasurements4->addRecord(0.500, 0.8132, 0.1673, 0.1673); + aMeasurements4->addRecord(0.510, 0.8138, 0.1672, 0.1672); + aMeasurements4->addRecord(0.520, 0.8131, 0.1668, 0.1668); + aMeasurements4->addRecord(0.530, 0.8135, 0.1667, 0.1667); + aMeasurements4->addRecord(0.540, 0.814, 0.1666, 0.1666); + aMeasurements4->addRecord(0.550, 0.8117, 0.1661, 0.1661); + aMeasurements4->addRecord(0.560, 0.8102, 0.1656, 0.1656); + aMeasurements4->addRecord(0.570, 0.8088, 0.1652, 0.1652); + aMeasurements4->addRecord(0.580, 0.8076, 0.1648, 0.1648); + aMeasurements4->addRecord(0.590, 0.8035, 0.164, 0.164); + aMeasurements4->addRecord(0.600, 0.8013, 0.1634, 0.1634); + aMeasurements4->addRecord(0.610, 0.8003, 0.1632, 0.1632); + aMeasurements4->addRecord(0.620, 0.794, 0.1619, 0.1619); + aMeasurements4->addRecord(0.630, 0.7923, 0.1615, 0.1615); + aMeasurements4->addRecord(0.640, 0.7888, 0.1608, 0.1608); + aMeasurements4->addRecord(0.650, 0.7848, 0.16, 0.16); + aMeasurements4->addRecord(0.660, 0.781, 0.1593, 0.1593); + aMeasurements4->addRecord(0.670, 0.7806, 0.1591, 0.1591); + aMeasurements4->addRecord(0.680, 0.7733, 0.1578, 0.1578); + aMeasurements4->addRecord(0.690, 0.7702, 0.1571, 0.1571); + aMeasurements4->addRecord(0.700, 0.7669, 0.1565, 0.1565); + aMeasurements4->addRecord(0.710, 0.7614, 0.1555, 0.1555); + aMeasurements4->addRecord(0.720, 0.7586, 0.155, 0.155); + aMeasurements4->addRecord(0.730, 0.7537, 0.1541, 0.1541); + aMeasurements4->addRecord(0.740, 0.7462, 0.1528, 0.1528); + aMeasurements4->addRecord(0.750, 0.7449, 0.1525, 0.1525); + aMeasurements4->addRecord(0.760, 0.7396, 0.1515, 0.1515); + aMeasurements4->addRecord(0.770, 0.7378, 0.1512, 0.1512); + aMeasurements4->addRecord(0.780, 0.7359, 0.1508, 0.1508); + aMeasurements4->addRecord(0.790, 0.7259, 0.1491, 0.1491); + aMeasurements4->addRecord(0.800, 0.7275, 0.1493, 0.1493); + aMeasurements4->addRecord(0.850, 0.709, 0.1461, 0.1461); + aMeasurements4->addRecord(0.900, 0.7009, 0.1445, 0.1445); + aMeasurements4->addRecord(0.950, 0.6907, 0.1428, 0.1428); + aMeasurements4->addRecord(1.000, 0.6858, 0.1418, 0.1418); + aMeasurements4->addRecord(1.050, 0.6844, 0.1415, 0.1415); + aMeasurements4->addRecord(1.100, 0.6843, 0.1413, 0.1413); + aMeasurements4->addRecord(1.150, 0.686, 0.1414, 0.1414); + aMeasurements4->addRecord(1.200, 0.6892, 0.1418, 0.1418); + aMeasurements4->addRecord(1.250, 0.6946, 0.1424, 0.1424); + aMeasurements4->addRecord(1.300, 0.7021, 0.1434, 0.1434); + aMeasurements4->addRecord(1.350, 0.7101, 0.1445, 0.1445); + aMeasurements4->addRecord(1.400, 0.7188, 0.1457, 0.1457); + aMeasurements4->addRecord(1.450, 0.729, 0.1471, 0.1471); + aMeasurements4->addRecord(1.500, 0.7404, 0.1488, 0.1488); + aMeasurements4->addRecord(1.550, 0.7489, 0.15, 0.15); + aMeasurements4->addRecord(1.600, 0.7557, 0.1509, 0.1509); + aMeasurements4->addRecord(1.650, 0.7583, 0.1512, 0.1512); + aMeasurements4->addRecord(1.700, 0.758, 0.151, 0.151); + aMeasurements4->addRecord(1.750, 0.7585, 0.1509, 0.1509); + aMeasurements4->addRecord(1.800, 0.7554, 0.1503, 0.1503); + aMeasurements4->addRecord(1.850, 0.7537, 0.1498, 0.1498); + aMeasurements4->addRecord(1.900, 0.7575, 0.1503, 0.1503); + aMeasurements4->addRecord(1.950, 0.7546, 0.1497, 0.1497); + aMeasurements4->addRecord(2.000, 0.7528, 0.1492, 0.1492); + aMeasurements4->addRecord(2.050, 0.7536, 0.1492, 0.1492); + aMeasurements4->addRecord(2.100, 0.7555, 0.1494, 0.1494); + aMeasurements4->addRecord(2.150, 0.7449, 0.1475, 0.1475); + aMeasurements4->addRecord(2.200, 0.7335, 0.1456, 0.1456); + aMeasurements4->addRecord(2.250, 0.7305, 0.145, 0.145); + aMeasurements4->addRecord(2.300, 0.7334, 0.1453, 0.1453); + aMeasurements4->addRecord(2.350, 0.7374, 0.1458, 0.1458); + aMeasurements4->addRecord(2.400, 0.7261, 0.1439, 0.1439); + aMeasurements4->addRecord(2.450, 0.7248, 0.1436, 0.1436); + aMeasurements4->addRecord(2.500, 0.7203, 0.1427, 0.1427); + + std::shared_ptr aSample4 = + std::make_shared(aMeasurements4, aSolarRadiation); + std::shared_ptr aAngular4 = + std::make_shared(aSample4, 40.0); + + return aAngular4; + } + + std::shared_ptr getSample4() + { + auto aSolarRadiation = loadSolarRadiationFile(); + + std::shared_ptr aMeasurements9 = + std::make_shared(); + // incident angle = 90 + aMeasurements9->addRecord(0.290, 0, 1, 1); + aMeasurements9->addRecord(0.295, 0, 1, 1); + aMeasurements9->addRecord(0.300, 0, 1, 1); + aMeasurements9->addRecord(0.305, 0, 1, 1); + aMeasurements9->addRecord(0.310, 0, 1, 1); + aMeasurements9->addRecord(0.315, 0, 1, 1); + aMeasurements9->addRecord(0.320, 0, 1, 1); + aMeasurements9->addRecord(0.325, 0, 1, 1); + aMeasurements9->addRecord(0.330, 0, 1, 1); + aMeasurements9->addRecord(0.335, 0, 1, 1); + aMeasurements9->addRecord(0.340, 0, 1, 1); + aMeasurements9->addRecord(0.345, 0, 1, 1); + aMeasurements9->addRecord(0.350, 0, 1, 1); + aMeasurements9->addRecord(0.355, 0, 1, 1); + aMeasurements9->addRecord(0.360, 0, 1, 1); + aMeasurements9->addRecord(0.365, 0, 1, 1); + aMeasurements9->addRecord(0.370, 0, 1, 1); + aMeasurements9->addRecord(0.375, 0, 1, 1); + aMeasurements9->addRecord(0.380, 0, 1, 1); + aMeasurements9->addRecord(0.385, 0, 1, 1); + aMeasurements9->addRecord(0.390, 0, 1, 1); + aMeasurements9->addRecord(0.395, 0, 1, 1); + aMeasurements9->addRecord(0.400, 0, 1, 1); + aMeasurements9->addRecord(0.410, 0, 1, 1); + aMeasurements9->addRecord(0.420, 0, 1, 1); + aMeasurements9->addRecord(0.430, 0, 1, 1); + aMeasurements9->addRecord(0.440, 0, 1, 1); + aMeasurements9->addRecord(0.450, 0, 1, 1); + aMeasurements9->addRecord(0.460, 0, 1, 1); + aMeasurements9->addRecord(0.470, 0, 1, 1); + aMeasurements9->addRecord(0.480, 0, 1, 1); + aMeasurements9->addRecord(0.490, 0, 1, 1); + aMeasurements9->addRecord(0.500, 0, 1, 1); + aMeasurements9->addRecord(0.510, 0, 1, 1); + aMeasurements9->addRecord(0.520, 0, 1, 1); + aMeasurements9->addRecord(0.530, 0, 1, 1); + aMeasurements9->addRecord(0.540, 0, 1, 1); + aMeasurements9->addRecord(0.550, 0, 1, 1); + aMeasurements9->addRecord(0.560, 0, 1, 1); + aMeasurements9->addRecord(0.570, 0, 1, 1); + aMeasurements9->addRecord(0.580, 0, 1, 1); + aMeasurements9->addRecord(0.590, 0, 1, 1); + aMeasurements9->addRecord(0.600, 0, 1, 1); + aMeasurements9->addRecord(0.610, 0, 1, 1); + aMeasurements9->addRecord(0.620, 0, 1, 1); + aMeasurements9->addRecord(0.630, 0, 1, 1); + aMeasurements9->addRecord(0.640, 0, 1, 1); + aMeasurements9->addRecord(0.650, 0, 1, 1); + aMeasurements9->addRecord(0.660, 0, 1, 1); + aMeasurements9->addRecord(0.670, 0, 1, 1); + aMeasurements9->addRecord(0.680, 0, 1, 1); + aMeasurements9->addRecord(0.690, 0, 1, 1); + aMeasurements9->addRecord(0.700, 0, 1, 1); + aMeasurements9->addRecord(0.710, 0, 1, 1); + aMeasurements9->addRecord(0.720, 0, 1, 1); + aMeasurements9->addRecord(0.730, 0, 1, 1); + aMeasurements9->addRecord(0.740, 0, 1, 1); + aMeasurements9->addRecord(0.750, 0, 1, 1); + aMeasurements9->addRecord(0.760, 0, 1, 1); + aMeasurements9->addRecord(0.770, 0, 1, 1); + aMeasurements9->addRecord(0.780, 0, 1, 1); + aMeasurements9->addRecord(0.790, 0, 1, 1); + aMeasurements9->addRecord(0.800, 0, 1, 1); + aMeasurements9->addRecord(0.850, 0, 1, 1); + aMeasurements9->addRecord(0.900, 0, 1, 1); + aMeasurements9->addRecord(0.950, 0, 1, 1); + aMeasurements9->addRecord(1.000, 0, 1, 1); + aMeasurements9->addRecord(1.050, 0, 1, 1); + aMeasurements9->addRecord(1.100, 0, 1, 1); + aMeasurements9->addRecord(1.150, 0, 1, 1); + aMeasurements9->addRecord(1.200, 0, 1, 1); + aMeasurements9->addRecord(1.250, 0, 1, 1); + aMeasurements9->addRecord(1.300, 0, 1, 1); + aMeasurements9->addRecord(1.350, 0, 1, 1); + aMeasurements9->addRecord(1.400, 0, 1, 1); + aMeasurements9->addRecord(1.450, 0, 1, 1); + aMeasurements9->addRecord(1.500, 0, 1, 1); + aMeasurements9->addRecord(1.550, 0, 1, 1); + aMeasurements9->addRecord(1.600, 0, 1, 1); + aMeasurements9->addRecord(1.650, 0, 1, 1); + aMeasurements9->addRecord(1.700, 0, 1, 1); + aMeasurements9->addRecord(1.750, 0, 1, 1); + aMeasurements9->addRecord(1.800, 0, 1, 1); + aMeasurements9->addRecord(1.850, 0, 1, 1); + aMeasurements9->addRecord(1.900, 0, 1, 1); + aMeasurements9->addRecord(1.950, 0, 1, 1); + aMeasurements9->addRecord(2.000, 0, 1, 1); + aMeasurements9->addRecord(2.050, 0, 1, 1); + aMeasurements9->addRecord(2.100, 0, 1, 1); + aMeasurements9->addRecord(2.150, 0, 1, 1); + aMeasurements9->addRecord(2.200, 0, 1, 1); + aMeasurements9->addRecord(2.250, 0, 1, 1); + aMeasurements9->addRecord(2.300, 0, 1, 1); + aMeasurements9->addRecord(2.350, 0, 1, 1); + aMeasurements9->addRecord(2.400, 0, 1, 1); + aMeasurements9->addRecord(2.450, 0, 1, 1); + aMeasurements9->addRecord(2.500, 0, 1, 1); + + std::shared_ptr aSample9 = + std::make_shared(aMeasurements9, aSolarRadiation); + std::shared_ptr aAngular9 = + std::make_shared(aSample9, 90.0); + + return aAngular9; + } + + std::shared_ptr getSample09() + { + auto aSolarRadiation = loadSolarRadiationFile(); + + std::shared_ptr aMeasurements09 = + std::make_shared(); + // incident angle = 0 + + aMeasurements09->addRecord(0.290, 0, 0.0481, 0.0481); + aMeasurements09->addRecord(0.295, 0, 0.0479, 0.0479); + aMeasurements09->addRecord(0.300, 0, 0.0476, 0.0476); + aMeasurements09->addRecord(0.305, 0, 0.0474, 0.0474); + aMeasurements09->addRecord(0.310, 0.007, 0.0471, 0.0471); + aMeasurements09->addRecord(0.315, 0.035, 0.047, 0.047); + aMeasurements09->addRecord(0.320, 0.0975, 0.0472, 0.0472); + aMeasurements09->addRecord(0.325, 0.2099, 0.0487, 0.0487); + aMeasurements09->addRecord(0.330, 0.3497, 0.0525, 0.0525); + aMeasurements09->addRecord(0.335, 0.4865, 0.0581, 0.0581); + aMeasurements09->addRecord(0.340, 0.6057, 0.0644, 0.0644); + aMeasurements09->addRecord(0.345, 0.7035, 0.0706, 0.0706); + aMeasurements09->addRecord(0.350, 0.7687, 0.0751, 0.0751); + aMeasurements09->addRecord(0.355, 0.812, 0.0783, 0.0783); + aMeasurements09->addRecord(0.360, 0.8429, 0.0806, 0.0806); + aMeasurements09->addRecord(0.365, 0.862, 0.0819, 0.0819); + aMeasurements09->addRecord(0.370, 0.8678, 0.0821, 0.0821); + aMeasurements09->addRecord(0.375, 0.8672, 0.0819, 0.0819); + aMeasurements09->addRecord(0.380, 0.8554, 0.0806, 0.0806); + aMeasurements09->addRecord(0.385, 0.8696, 0.0816, 0.0816); + aMeasurements09->addRecord(0.390, 0.8804, 0.0823, 0.0823); + aMeasurements09->addRecord(0.395, 0.8884, 0.0828, 0.0828); + aMeasurements09->addRecord(0.400, 0.8924, 0.083, 0.083); + aMeasurements09->addRecord(0.410, 0.8944, 0.0828, 0.0828); + aMeasurements09->addRecord(0.420, 0.8921, 0.0823, 0.0823); + aMeasurements09->addRecord(0.430, 0.8914, 0.082, 0.082); + aMeasurements09->addRecord(0.440, 0.8896, 0.0815, 0.0815); + aMeasurements09->addRecord(0.450, 0.8933, 0.0816, 0.0816); + aMeasurements09->addRecord(0.460, 0.8972, 0.0817, 0.0817); + aMeasurements09->addRecord(0.470, 0.8991, 0.0816, 0.0816); + aMeasurements09->addRecord(0.480, 0.9013, 0.0816, 0.0816); + aMeasurements09->addRecord(0.490, 0.9026, 0.0815, 0.0815); + aMeasurements09->addRecord(0.500, 0.9026, 0.0813, 0.0813); + aMeasurements09->addRecord(0.510, 0.9031, 0.0811, 0.0811); + aMeasurements09->addRecord(0.520, 0.9025, 0.0809, 0.0809); + aMeasurements09->addRecord(0.530, 0.9028, 0.0808, 0.0808); + aMeasurements09->addRecord(0.540, 0.9033, 0.0807, 0.0807); + aMeasurements09->addRecord(0.550, 0.9013, 0.0804, 0.0804); + aMeasurements09->addRecord(0.560, 0.8999, 0.0802, 0.0802); + aMeasurements09->addRecord(0.570, 0.8986, 0.0799, 0.0799); + aMeasurements09->addRecord(0.580, 0.8975, 0.0797, 0.0797); + aMeasurements09->addRecord(0.590, 0.8939, 0.0793, 0.0793); + aMeasurements09->addRecord(0.600, 0.8919, 0.079, 0.079); + aMeasurements09->addRecord(0.610, 0.891, 0.0789, 0.0789); + aMeasurements09->addRecord(0.620, 0.8853, 0.0783, 0.0783); + aMeasurements09->addRecord(0.630, 0.8838, 0.0781, 0.0781); + aMeasurements09->addRecord(0.640, 0.8806, 0.0777, 0.0777); + aMeasurements09->addRecord(0.650, 0.8769, 0.0773, 0.0773); + aMeasurements09->addRecord(0.660, 0.8735, 0.077, 0.077); + aMeasurements09->addRecord(0.670, 0.8731, 0.0769, 0.0769); + aMeasurements09->addRecord(0.680, 0.8665, 0.0763, 0.0763); + aMeasurements09->addRecord(0.690, 0.8637, 0.076, 0.076); + aMeasurements09->addRecord(0.700, 0.8607, 0.0757, 0.0757); + aMeasurements09->addRecord(0.710, 0.8557, 0.0753, 0.0753); + aMeasurements09->addRecord(0.720, 0.8531, 0.075, 0.075); + aMeasurements09->addRecord(0.730, 0.8487, 0.0746, 0.0746); + aMeasurements09->addRecord(0.740, 0.8418, 0.074, 0.074); + aMeasurements09->addRecord(0.750, 0.8406, 0.0738, 0.0738); + aMeasurements09->addRecord(0.760, 0.8358, 0.0734, 0.0734); + aMeasurements09->addRecord(0.770, 0.8341, 0.0732, 0.0732); + aMeasurements09->addRecord(0.780, 0.8324, 0.073, 0.073); + aMeasurements09->addRecord(0.790, 0.8232, 0.0723, 0.0723); + aMeasurements09->addRecord(0.800, 0.8246, 0.0723, 0.0723); + aMeasurements09->addRecord(0.850, 0.8076, 0.0708, 0.0708); + aMeasurements09->addRecord(0.900, 0.8002, 0.07, 0.07); + aMeasurements09->addRecord(0.950, 0.7907, 0.0692, 0.0692); + aMeasurements09->addRecord(1.000, 0.7862, 0.0687, 0.0687); + aMeasurements09->addRecord(1.050, 0.7849, 0.0685, 0.0685); + aMeasurements09->addRecord(1.100, 0.7848, 0.0683, 0.0683); + aMeasurements09->addRecord(1.150, 0.7864, 0.0683, 0.0683); + aMeasurements09->addRecord(1.200, 0.7894, 0.0685, 0.0685); + aMeasurements09->addRecord(1.250, 0.7944, 0.0687, 0.0687); + aMeasurements09->addRecord(1.300, 0.8014, 0.0691, 0.0691); + aMeasurements09->addRecord(1.350, 0.8088, 0.0695, 0.0695); + aMeasurements09->addRecord(1.400, 0.8168, 0.07, 0.07); + aMeasurements09->addRecord(1.450, 0.8261, 0.0705, 0.0705); + aMeasurements09->addRecord(1.500, 0.8366, 0.0712, 0.0712); + aMeasurements09->addRecord(1.550, 0.8444, 0.0716, 0.0716); + aMeasurements09->addRecord(1.600, 0.8506, 0.0719, 0.0719); + aMeasurements09->addRecord(1.650, 0.853, 0.072, 0.072); + aMeasurements09->addRecord(1.700, 0.8527, 0.0719, 0.0719); + aMeasurements09->addRecord(1.750, 0.8532, 0.0718, 0.0718); + aMeasurements09->addRecord(1.800, 0.8504, 0.0714, 0.0714); + aMeasurements09->addRecord(1.850, 0.8488, 0.0712, 0.0712); + aMeasurements09->addRecord(1.900, 0.8523, 0.0713, 0.0713); + aMeasurements09->addRecord(1.950, 0.8497, 0.071, 0.071); + aMeasurements09->addRecord(2.000, 0.848, 0.0708, 0.0708); + aMeasurements09->addRecord(2.050, 0.8488, 0.0707, 0.0707); + aMeasurements09->addRecord(2.100, 0.8505, 0.0707, 0.0707); + aMeasurements09->addRecord(2.150, 0.8408, 0.0699, 0.0699); + aMeasurements09->addRecord(2.200, 0.8304, 0.0691, 0.0691); + aMeasurements09->addRecord(2.250, 0.8277, 0.0688, 0.0688); + aMeasurements09->addRecord(2.300, 0.8303, 0.0688, 0.0688); + aMeasurements09->addRecord(2.350, 0.834, 0.069, 0.069); + aMeasurements09->addRecord(2.400, 0.8236, 0.0681, 0.0681); + aMeasurements09->addRecord(2.450, 0.8225, 0.0679, 0.0679); + aMeasurements09->addRecord(2.500, 0.8184, 0.0675, 0.0675); + + std::shared_ptr aSample09 = + std::make_shared(aMeasurements09, aSolarRadiation); + std::shared_ptr aAngular09 = + std::make_shared(aSample09, 90.0); + + return aAngular09; + } + +protected: + virtual void SetUp() + { + std::shared_ptr aAngular0 = getSample1(); + std::shared_ptr aAngular1 = getSample2(); + std::shared_ptr aAngular4 = getSample3(); + std::shared_ptr aAngular9 = getSample4(); + std::shared_ptr aAngular09 = getSample09(); + + // Need to extract common wavelengths + CCommonWavelengths aCommonWL; + std::vector wl0 = aAngular0->getWavelengthsFromSample(); + std::vector wl10 = aAngular1->getWavelengthsFromSample(); + std::vector wl40 = aAngular4->getWavelengthsFromSample(); + std::vector wl90 = aAngular9->getWavelengthsFromSample(); + aCommonWL.addWavelength(wl0); + aCommonWL.addWavelength(wl10); + aCommonWL.addWavelength(wl40); + aCommonWL.addWavelength(wl90); + std::vector commonWavelengths = + aCommonWL.getCombinedWavelengths(Combine::Interpolate); + + // Creating angular sample + + m_Measurements = std::make_shared(aAngular0, commonWavelengths); + m_Measurements->addMeasurement(aAngular1); + m_Measurements->addMeasurement(aAngular4); + m_Measurements->addMeasurement(aAngular9); + // m_Measurements->addMeasurement( aAngular09 ); + + std::shared_ptr aMaterial = + std::make_shared(m_Measurements, WavelengthRange::Solar); + + // create BSDF + const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + + // make layer + m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); + } + +public: + std::shared_ptr getLayer() + { + return m_Layer; + }; + + std::shared_ptr getMeasurements() const + { + return m_Measurements; + }; +}; + +TEST_F(TestSpecularAngularLayer_102, TestSpecular1) +{ + SCOPED_TRACE("Begin Test: Specular and Angular layer - BSDF."); + + std::shared_ptr aLayer = getLayer(); + + CBSDFIntegrator aResults = aLayer->getResults(); + + double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); + EXPECT_NEAR(0.64541405979702648, tauDiff, 1e-6); + + double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); + EXPECT_NEAR(0.272951100863078, RfDiff, 1e-6); + + double theta = 35; + double phi = 58; + + double tauHem = aResults.DirHem(Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.780630538026433, tauHem, 1e-6); + + double tauDir = aResults.DirDir(Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.780630538026433, tauDir, 1e-6); + + /* std::shared_ptr< SquareMatrix > aT = aResults->getMatrix( Side::Front, PropertySimple::T ); + + + + // Test only diagonal of transmittance matrix + size_t size = aT->getSize(); + + + + std::vector< double > correctResults; + correctResults.push_back( 34.940061244564802 ); + correctResults.push_back( 35.727444960862350 ); + correctResults.push_back( 35.727444960862350 ); + correctResults.push_back( 35.727444960862350 ); + correctResults.push_back( 35.727444960862350 ); + correctResults.push_back( 35.727444960862350 ); + correctResults.push_back( 35.727444960862350 ); + correctResults.push_back( 35.727444960862350 ); + correctResults.push_back( 35.727444960862350 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 37.933187566186469 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 35.009611836870832 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 36.522068529403214 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 35.586788153437524 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 38.033919314642546 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 29.061194222087263 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + correctResults.push_back( 16.978250544025638 ); + + + + std::vector< double > calculatedResults; + for( size_t i = 0; i < size; ++i ) { + calculatedResults.push_back( (*aT)[i][i] ); + } + + + + EXPECT_EQ( correctResults.size(), calculatedResults.size() ); + for( size_t i = 0; i < size; ++i ) { + EXPECT_NEAR( correctResults[i], calculatedResults[i], 1e-6 ); + } + + + + // Front reflectance + std::shared_ptr< SquareMatrix > aRf = aResults->getMatrix( Side::Front, PropertySimple::R ); + + + + correctResults.clear(); + calculatedResults.clear(); + + + + correctResults.push_back( 3.1351336407416635 ); + correctResults.push_back( 3.2072370120929721 ); + correctResults.push_back( 3.2072370120929721 ); + correctResults.push_back( 3.2072370120929721 ); + correctResults.push_back( 3.2072370120929721 ); + correctResults.push_back( 3.2072370120929721 ); + correctResults.push_back( 3.2072370120929721 ); + correctResults.push_back( 3.2072370120929721 ); + correctResults.push_back( 3.2072370120929721 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.4246526776043713 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.2466935886549604 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 3.6858547275750588 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 4.4320169592146170 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 7.2672051285243091 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 11.531318187987335 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + correctResults.push_back( 34.322921163935874 ); + + + + for( size_t i = 0; i < size; ++i ) { + calculatedResults.push_back( (*aRf)[i][i] ); + } + + + + EXPECT_EQ( correctResults.size(), calculatedResults.size() ); + for( size_t i = 0; i < size; ++i ) { + EXPECT_NEAR( correctResults[i], calculatedResults[i], 1e-6 ); + } */ +} diff --git a/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp index c3dcfc41..8320b6cd 100644 --- a/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp @@ -84,15 +84,15 @@ TEST_F(TestSpecularBSDFLayer_SingleBandMaterial, SingleBandSpecular) { std::shared_ptr aLayer = getLayer(); - std::shared_ptr aResults = aLayer->getResults(); + CBSDFIntegrator aResults = aLayer->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.0, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.05, RfDiff, 1e-6); - const auto AbsFront{aResults->Abs(Side::Front)}; + const auto AbsFront{aResults.Abs(Side::Front)}; EXPECT_EQ(AbsFront.size(), 145u); const std::vector correctAbs(145, 0.95); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp index b97c32a1..b950e243 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp @@ -56,18 +56,17 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) std::shared_ptr aLayer = getLayer(); - std::shared_ptr>> aResults = - aLayer->getWavelengthResults(); + std::vector aResults = aLayer->getWavelengthResults(); size_t correctSize = 5; - EXPECT_EQ(correctSize, aResults->size()); + EXPECT_EQ(correctSize, aResults.size()); /////////////////////////////////////////////////////////////////////// /// Wavelength number 1 /////////////////////////////////////////////////////////////////////// - auto aT = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults[0].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix @@ -85,7 +84,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) } // Front reflectance - auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults[0].getMatrix(Side::Front, PropertySimple::R); correctResults = { 0.61134, 0.661508, 0.661508, 0.661508, 0.661508, 0.661508, 0.661508, 0.661508, 0.661508, @@ -105,7 +104,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) /// Wavelength number 2 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[1].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix @@ -123,7 +122,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) } // Front reflectance - aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[1].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.61134, 0.661507, 0.661507, 0.661507, 0.661507, 0.661507, 0.661507, 0.661507, 0.661507, 0.659001, 0.659001, 0.659001, 0.659001, 0.659001, @@ -142,7 +141,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) /// Wavelength number 3 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[2].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix @@ -160,7 +159,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) } // Front reflectance - aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[2].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.61134, 0.661498, 0.661498, 0.661498, 0.661498, 0.661498, 0.661498, 0.661498, 0.661498, 0.658976, 0.658976, 0.658976, 0.658976, 0.658976, @@ -179,7 +178,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) /// Wavelength number 4 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[3].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix @@ -197,7 +196,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) } // Front reflectance - aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[3].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.61134, 0.661398, 0.661398, 0.661398, 0.661398, 0.661398, 0.661398, 0.661398, 0.661398, 0.658665, 0.658665, 0.658665, 0.658665, 0.658665, @@ -216,7 +215,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) /// Wavelength number 5 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[4]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[4].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix @@ -234,7 +233,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) } // Front reflectance - aRf = (*aResults)[4]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[4].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.61134, 0.660889, 0.660889, 0.660889, 0.660889, 0.660889, 0.660889, 0.660889, 0.660889, 0.657004, 0.657004, 0.657004, 0.657004, 0.657004, diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp index 7a1e23a2..2ae853df 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp @@ -142,24 +142,24 @@ TEST_F(TestSpecularLayer_102, TestSpecular1) std::shared_ptr aLayer = getLayer(); - std::shared_ptr aResults = aLayer->getResults(); + auto aResults = aLayer->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.75265482876657230, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.14604173568524281, RfDiff, 1e-6); const double theta = 35; const double phi = 58; - const double tauHem = aResults->DirHem(Side::Front, PropertySimple::T, theta, phi); + const double tauHem = aResults.DirHem(Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.82700480785360742, tauHem, 1e-6); - const double tauDir = aResults->DirDir(Side::Front, PropertySimple::T, theta, phi); + const double tauDir = aResults.DirDir(Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.82700480785360742, tauDir, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix const size_t size = aT.size(); @@ -216,7 +216,7 @@ TEST_F(TestSpecularLayer_102, TestSpecular1) } // Front reflectance - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); calculatedResults.clear(); correctResults = { diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp index 41f75ffb..26c5d99d 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp @@ -142,24 +142,24 @@ TEST_F(TestSpecularLayer_103, TestSpecular1) std::shared_ptr aLayer = getLayer(); - std::shared_ptr aResults = aLayer->getResults(); + CBSDFIntegrator aResults = aLayer->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.68823803381618487, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.13803530512699569, RfDiff, 1e-6); const double theta = 23; const double phi = 198; - const double tauHem = aResults->DirHem(Side::Front, PropertySimple::T, theta, phi); + const double tauHem = aResults.DirHem(Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.76691124365416619, tauHem, 1e-6); - const double tauDir = aResults->DirDir(Side::Front, PropertySimple::T, theta, phi); + const double tauDir = aResults.DirDir(Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.76691124365416619, tauDir, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix const size_t size = aT.size(); @@ -211,7 +211,7 @@ TEST_F(TestSpecularLayer_103, TestSpecular1) } // Front reflectance - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults = { 2.9326345631447182, 2.9992304210494063, 2.9992304210494063, 2.9992304210494063, diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp index 6e14f3b2..f551a9ce 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp @@ -331,24 +331,24 @@ TEST_F(TestSpecularLayer_1042, TestSpecular1) std::shared_ptr aLayer = getLayer(); - std::shared_ptr aResults = aLayer->getResults(); + auto aResults = aLayer->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.3950293, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.4002210, RfDiff, 1e-6); const double theta = 37; const double phi = 59; - const double tauHem = aResults->DirHem(Side::Front, PropertySimple::T, theta, phi); + const double tauHem = aResults.DirHem(Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.4334180, tauHem, 1e-6); - const double tauDir = aResults->DirDir(Side::Front, PropertySimple::T, theta, phi); + const double tauDir = aResults.DirDir(Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.4334180, tauDir, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size_t size = aT.size(); @@ -399,7 +399,7 @@ TEST_F(TestSpecularLayer_1042, TestSpecular1) } // Back reflectance - auto aRb = aResults->getMatrix(Side::Back, PropertySimple::R); + auto aRb = aResults.getMatrix(Side::Back, PropertySimple::R); correctResults = { 16.633681391213987, 16.806064754975282, 16.806064754975282, 16.806064754975282, diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp index eda2a573..80f54e92 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp @@ -64,11 +64,11 @@ TEST_F(TestVenetianDirectionalShadeCurvedMinus45_0, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.382240, tauDiff, 1e-6); - double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.541774, RfDiff, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp index 17532884..84637425 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp @@ -63,21 +63,21 @@ TEST_F(TestVenetianDirectionalShadeFlat0_1, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.44649813630049223, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.28386835793952669, RfDiff, 1e-6); const double theta = 23; const double phi = 198; - const double tauHem = aResults->DirHem(Side::Front, PropertySimple::T, theta, phi); + const double tauHem = aResults.DirHem(Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.42987405997685452, tauHem, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix const size_t size = aT.size(); @@ -132,7 +132,7 @@ TEST_F(TestVenetianDirectionalShadeFlat0_1, TestVenetian1) } // Front reflectance - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults.clear(); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp index 049b29c6..322b4852 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp @@ -63,11 +63,11 @@ TEST_F(TestVenetianDirectionalShadeFlat0_2, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.45408806110142574, tauDiff, 1e-6); - double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.27657763790935469, RfDiff, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp index f4292fe9..9ecda365 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp @@ -63,15 +63,15 @@ TEST_F(TestVenetianDirectionalShadeFlat0_3, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + auto aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.48775116654942097, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.22509839868274970, RfDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size_t size = aT.size(); @@ -126,7 +126,7 @@ TEST_F(TestVenetianDirectionalShadeFlat0_3, TestVenetian1) } // Front reflectance - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults.clear(); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp index 72893109..681456e6 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp @@ -63,15 +63,15 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.38194085830991792, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.37327866349094058, RfDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix const size_t size = aT.size(); @@ -126,7 +126,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5, TestVenetian1) } // Front reflectance - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults.clear(); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp index 55901a39..1fa3d6b2 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp @@ -67,8 +67,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa std::shared_ptr aLayer = getLayer(); - std::shared_ptr>> aResults = - aLayer->getWavelengthResults(); + std::vector aResults = aLayer->getWavelengthResults(); const auto wavelengths{aLayer->getBandWavelengths()}; const std::vector correctWavelengths{0.3, 0.38, 0.780001, 2.5}; @@ -81,13 +80,13 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa size_t correctSize = correctWavelengths.size(); - EXPECT_EQ(correctSize, aResults->size()); + EXPECT_EQ(correctSize, aResults.size()); /////////////////////////////////////////////////////////////////////// // Wavelength number 1 /////////////////////////////////////////////////////////////////////// - auto aT = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults[0].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size_t size = aT.size(); @@ -106,7 +105,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa } // Front reflectance - auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults[0].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.196291, 0.196291, 0.150276, 0.138258, 0.150276, 0.196291, 0.158764, 0.13836, 0.158764, 0.196291, 0.126729, 0.070042, 0.053571, 0.070042, @@ -125,7 +124,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Wavelength number 2 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[1].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); @@ -144,7 +143,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa } // Front reflectance - aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[1].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.165903, 0.165903, 0.127956, 0.117843, 0.127956, 0.165903, 0.134906, 0.117926, 0.134906, 0.165903, 0.108225, 0.060355, 0.046206, 0.060355, @@ -163,17 +162,17 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Wavelength number 3 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[2].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); - correctResults = { - 0.810591, 0.868495, 3.878222, 5.126954, 3.878222, 0.868495, 0.054218, 0.050793, 0.054218, - 0.810004, 5.221758, 8.462545, 9.651114, 8.462545, 5.221758, 0.810004, 0.046418, 0.029956, - 0.028063, 0.029956, 0.046418, 0.810004, 9.182664, 10.646963, 8.394372, 10.646963, 9.182664, - 0.810004, 0.028635, 0.017473, 0.015928, 0.017473, 0.028635, 0.773294, 0.126744, 0.126608, - 0.126744, 0.773294, 0.009315, 0.00915, 0.009315}; + correctResults = {0.810591, 0.868495, 3.878222, 5.126954, 3.878222, 0.868495, 0.054218, + 0.050793, 0.054218, 0.810004, 5.221758, 8.462545, 9.651114, 8.462545, + 5.221758, 0.810004, 0.046418, 0.029956, 0.028063, 0.029956, 0.046418, + 0.810004, 9.182664, 10.646963, 8.394372, 10.646963, 9.182664, 0.810004, + 0.028635, 0.017473, 0.015928, 0.017473, 0.028635, 0.773294, 0.126744, + 0.126608, 0.126744, 0.773294, 0.009315, 0.00915, 0.009315}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -182,7 +181,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa } // Front reflectance - aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[2].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.196291, 0.196291, 0.150276, 0.138258, 0.150276, 0.196291, 0.158764, 0.13836, 0.158764, 0.196291, 0.126729, 0.070042, 0.053571, 0.070042, @@ -201,17 +200,17 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa // Wavelength number 4 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[3].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); - correctResults = { - 0.810591, 0.868495, 3.878222, 5.126954, 3.878222, 0.868495, 0.054218, 0.050793, 0.054218, - 0.810004, 5.221758, 8.462545, 9.651114, 8.462545, 5.221758, 0.810004, 0.046418, 0.029956, - 0.028063, 0.029956, 0.046418, 0.810004, 9.182664, 10.646963, 8.394372, 10.646963, 9.182664, - 0.810004, 0.028635, 0.017473, 0.015928, 0.017473, 0.028635, 0.773294, 0.126744, 0.126608, - 0.126744, 0.773294, 0.009315, 0.00915, 0.009315}; + correctResults = {0.810591, 0.868495, 3.878222, 5.126954, 3.878222, 0.868495, 0.054218, + 0.050793, 0.054218, 0.810004, 5.221758, 8.462545, 9.651114, 8.462545, + 5.221758, 0.810004, 0.046418, 0.029956, 0.028063, 0.029956, 0.046418, + 0.810004, 9.182664, 10.646963, 8.394372, 10.646963, 9.182664, 0.810004, + 0.028635, 0.017473, 0.015928, 0.017473, 0.028635, 0.773294, 0.126744, + 0.126608, 0.126744, 0.773294, 0.009315, 0.00915, 0.009315}; EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -220,7 +219,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa } // Front reflectance - aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[3].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.196291, 0.196291, 0.150276, 0.138258, 0.150276, 0.196291, 0.158764, 0.13836, 0.158764, 0.196291, 0.126729, 0.070042, 0.053571, 0.070042, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp index 632ace80..46359ed3 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp @@ -61,11 +61,11 @@ TEST_F(TestVenetianUniformShadeCurvedMinus45_0, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.384231, tauDiff, 1e-6); - double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.542896, RfDiff, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp index 430e4e66..8aa79f7f 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp @@ -61,15 +61,15 @@ TEST_F(TestVenetianUniformShadeCurvedMinus55_0, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + auto aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.232141, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.301555, RfDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix const size_t size = aT.size(); @@ -124,7 +124,7 @@ TEST_F(TestVenetianUniformShadeCurvedMinus55_0, TestVenetian1) } // Front reflectance - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults.clear(); @@ -177,7 +177,7 @@ TEST_F(TestVenetianUniformShadeCurvedMinus55_0, TestVenetian1) } // Back transmittance - auto aTb = aResults->getMatrix(Side::Back, PropertySimple::T); + auto aTb = aResults.getMatrix(Side::Back, PropertySimple::T); correctResults.clear(); @@ -230,7 +230,7 @@ TEST_F(TestVenetianUniformShadeCurvedMinus55_0, TestVenetian1) } // Back reflectance - auto aRb = aResults->getMatrix(Side::Back, PropertySimple::R); + auto aRb = aResults.getMatrix(Side::Back, PropertySimple::R); correctResults.clear(); diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp index 38b03297..42486beb 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp @@ -61,22 +61,22 @@ TEST_F(TestVenetianUniformShadeCurvedZeroAngle_0, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + CBSDFIntegrator aResults = aShade->getResults(); - double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.422932, tauDiff, 1e-6); - double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.020573, RfDiff, 1e-6); auto theta{0.0}; auto phi{0.0}; - double tauDir = aResults->DirDir(Side::Front, PropertySimple::T, theta, phi); + double tauDir = aResults.DirDir(Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.936759, tauDir, 1e-6); - double rhoDir = aResults->DirDir(Side::Front, PropertySimple::R, theta, phi); + double rhoDir = aResults.DirDir(Side::Front, PropertySimple::R, theta, phi); EXPECT_NEAR(7.583e-05, rhoDir, 1e-6); - double absIR = aResults->Abs(Side::Front, theta, phi); + double absIR = aResults.Abs(Side::Front, theta, phi); EXPECT_NEAR(0.059455, absIR, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp index 38ceb144..4d142219 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp @@ -62,15 +62,15 @@ TEST_F(TestVenetianUniformShadeFlat0_1, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + auto aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.65093991496438897, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.188319, RfDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size_t size = aT.size(); @@ -125,7 +125,7 @@ TEST_F(TestVenetianUniformShadeFlat0_1, TestVenetian1) } // Front reflectance - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults.clear(); @@ -178,7 +178,7 @@ TEST_F(TestVenetianUniformShadeFlat0_1, TestVenetian1) } // Back transmittance - auto aTb = aResults->getMatrix(Side::Back, PropertySimple::T); + auto aTb = aResults.getMatrix(Side::Back, PropertySimple::T); correctResults.clear(); @@ -231,7 +231,7 @@ TEST_F(TestVenetianUniformShadeFlat0_1, TestVenetian1) } // Back reflectance - auto aRb = aResults->getMatrix(Side::Back, PropertySimple::R); + auto aRb = aResults.getMatrix(Side::Back, PropertySimple::R); correctResults.clear(); diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp index 7661a65d..15c4045a 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp @@ -61,11 +61,11 @@ TEST_F(TestVenetianUniformShadeFlat0_2, TestDefaultA0Venetian) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + auto aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.397, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.019894, RfDiff, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp index 1c4988c2..2cd9d47c 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp @@ -60,15 +60,15 @@ TEST_F(TestVenetianUniformShadeFlat45_1, TestVenetian1) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + auto aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.47624006362615717, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.33488359240717491, RfDiff, 1e-6); - auto aT = aResults->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size_t size = aT.size(); @@ -123,7 +123,7 @@ TEST_F(TestVenetianUniformShadeFlat45_1, TestVenetian1) } // Front reflectance - auto aRf = aResults->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); correctResults.clear(); @@ -176,7 +176,7 @@ TEST_F(TestVenetianUniformShadeFlat45_1, TestVenetian1) } // Back transmittance - auto aTb = aResults->getMatrix(Side::Back, PropertySimple::T); + auto aTb = aResults.getMatrix(Side::Back, PropertySimple::T); correctResults.clear(); @@ -229,7 +229,7 @@ TEST_F(TestVenetianUniformShadeFlat45_1, TestVenetian1) } // Back reflectance - auto aRb = aResults->getMatrix(Side::Back, PropertySimple::R); + auto aRb = aResults.getMatrix(Side::Back, PropertySimple::R); correctResults.clear(); diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp index 24c4e58f..9a5c15e2 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp @@ -65,18 +65,17 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele std::shared_ptr aLayer = getLayer(); - std::shared_ptr>> aResults = - aLayer->getWavelengthResults(); + auto aResults = aLayer->getWavelengthResults(); size_t correctSize = 4; - EXPECT_EQ(correctSize, aResults->size()); + EXPECT_EQ(correctSize, aResults.size()); /////////////////////////////////////////////////////////////////////// // Wavelength number 1 /////////////////////////////////////////////////////////////////////// - auto aT = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults[0].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size_t size = aT.size(); @@ -95,7 +94,7 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele } // Front reflectance - auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults[0].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.148682, 0.148682, 0.114522, 0.100372, 0.114522, 0.148682, 0.16834, 0.174328, 0.16834, 0.148682, 0.09467, 0.05513, 0.040658, 0.05513, @@ -114,7 +113,7 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Wavelength number 2 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[1].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); @@ -133,7 +132,7 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele } // Front reflectance - aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[1].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.129988, 0.129988, 0.100123, 0.087752, 0.100123, 0.129988, 0.146686, 0.151645, 0.146686, 0.129988, 0.082767, 0.048199, 0.035546, 0.048199, @@ -152,7 +151,7 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Wavelength number 3 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[2].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); @@ -171,7 +170,7 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele } // Front reflectance - aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[2].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.148682, 0.148682, 0.114522, 0.100372, 0.114522, 0.148682, 0.16834, 0.174328, 0.16834, 0.148682, 0.09467, 0.05513, 0.040658, 0.05513, @@ -190,7 +189,7 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele // Wavelength number 4 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[3].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); @@ -209,7 +208,7 @@ TEST_F(TestVenetianUniformShadeFlat45_5_Multiwavelength, TestVenetianMultiWavele } // Front reflectance - aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[3].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.148682, 0.148682, 0.114522, 0.100372, 0.114522, 0.148682, 0.16834, 0.174328, 0.16834, 0.148682, 0.09467, 0.05513, 0.040658, 0.05513, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp index 4e591ff2..bfc55881 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp @@ -60,7 +60,7 @@ TEST_F(TestVenetianUniformShadeMatrix, TestVenetianMatrix) auto aResults = aShade.getResults(); FenestrationCommon::SquareMatrix & aT = - aResults->getMatrix(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); + aResults.getMatrix(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); // clang-format off std::vector> correctResults{ diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp index 0238d4eb..db395a9c 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp @@ -62,7 +62,7 @@ TEST_F(TestVenetianUniformShadeMatrixVertical, TestVenetianMatrix) auto aResults = aShade.getResults(); FenestrationCommon::SquareMatrix & aT = - aResults->getMatrix(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); + aResults.getMatrix(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); // clang-format off std::vector> correctResults{ diff --git a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp index 573f05c1..16e26d2e 100644 --- a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp @@ -54,22 +54,21 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) std::shared_ptr aLayer = getLayer(); - std::shared_ptr>> aResults = - aLayer->getWavelengthResults(); + auto aResults = aLayer->getWavelengthResults(); const auto wavelengths{aLayer->getBandWavelengths()}; const std::vector correctWavelengths{0.3, 0.38, 0.780002, 2.5}; EXPECT_EQ(wavelengths.size(), correctWavelengths.size()); - for(size_t i =0u; i < correctWavelengths.size(); ++i) + for(size_t i = 0u; i < correctWavelengths.size(); ++i) { EXPECT_NEAR(wavelengths[i], correctWavelengths[i], 1e-6); } size_t correctSize = correctWavelengths.size(); - EXPECT_EQ(correctSize, aResults->size()); + EXPECT_EQ(correctSize, aResults.size()); std::vector correctResults; @@ -77,7 +76,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) // Wavelength number 1 /////////////////////////////////////////////////////////////////////// - auto aT = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::T); + auto aT = aResults[0].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size_t size = aT.size(); @@ -97,7 +96,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) } // Front reflectance - auto aRf = (*aResults)[0]->getMatrix(Side::Front, PropertySimple::R); + auto aRf = aResults[0].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.136184, 0.138526, 0.138533, 0.138825, 0.138533, 0.138526, 0.138533, 0.138825, 0.138533, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, @@ -117,7 +116,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) // Wavelength number 2 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[1].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); @@ -137,7 +136,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) } // Front reflectance - aRf = (*aResults)[1]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[1].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.103285, 0.105049, 0.105053, 0.105273, 0.105053, 0.105049, 0.105053, 0.105273, 0.105053, 0.107984, 0.107356, 0.109122, 0.112568, 0.109122, @@ -157,7 +156,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) // Wavelength number 3 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[2].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); @@ -176,7 +175,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) } // Front reflectance - aRf = (*aResults)[2]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[2].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.136184, 0.138526, 0.138533, 0.138825, 0.138533, 0.138526, 0.138533, 0.138825, 0.138533, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, @@ -195,7 +194,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) // Wavelength number 4 /////////////////////////////////////////////////////////////////////// - aT = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::T); + aT = aResults[3].getMatrix(Side::Front, PropertySimple::T); // Test only diagonal of transmittance matrix size = aT.size(); @@ -214,7 +213,7 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) } // Front reflectance - aRf = (*aResults)[3]->getMatrix(Side::Front, PropertySimple::R); + aRf = aResults[3].getMatrix(Side::Front, PropertySimple::R); correctResults = {0.136184, 0.138526, 0.138533, 0.138825, 0.138533, 0.138526, 0.138533, 0.138825, 0.138533, 0.142351, 0.14151, 0.143861, 0.148459, 0.143861, diff --git a/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp b/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp index bbe76b2b..b40305ba 100644 --- a/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp @@ -49,20 +49,20 @@ TEST_F(TestWovenShadeUniformMaterial, TestSolarProperties) std::shared_ptr aShade = GetShade(); - std::shared_ptr aResults = aShade->getResults(); + auto aResults = aShade->getResults(); - const double tauDiff = aResults->DiffDiff(Side::Front, PropertySimple::T); + const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.037033896815761802, tauDiff, 1e-6); - const double RfDiff = aResults->DiffDiff(Side::Front, PropertySimple::R); + const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); EXPECT_NEAR(0.096296610318422418, RfDiff, 1e-6); - const double RbDiff = aResults->DiffDiff(Side::Back, PropertySimple::R); + const double RbDiff = aResults.DiffDiff(Side::Back, PropertySimple::R); EXPECT_NEAR(0.096296610318422418, RbDiff, 1e-6); const double theta{0.0}; const double phi{0.0}; - const double Emiss{aResults->Abs(Side::Front, theta, phi)}; + const double Emiss{aResults.Abs(Side::Front, theta, phi)}; EXPECT_NEAR(0.8, Emiss, 1e-6); } From 74d35b82cccc07773de9514a938b9cc7c96861ef Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 27 Jul 2022 12:31:54 -0700 Subject: [PATCH 11/81] BSDFIntegrator not used as shared pointer in the code anymore. It simplifies code clarity. --- src/Common/src/mmap.hpp | 9 +-- .../src/EquivalentBSDFLayer.cpp | 2 +- .../src/EquivalentBSDFLayerSingleBand.cpp | 24 ++++---- .../src/EquivalentBSDFLayerSingleBand.hpp | 20 +++--- src/MultiLayerOptics/src/MultiPaneBSDF.hpp | 2 +- .../units/DoubleLayerBSDFPerforated.unit.cpp | 6 +- .../units/DoubleLayerBSDFSpecular.unit.cpp | 6 +- ...lentBSDFTriplePerforatedInBetween.unit.cpp | 6 +- src/SingleLayerOptics/src/BSDFIntegrator.cpp | 58 +++++++----------- src/SingleLayerOptics/src/BSDFIntegrator.hpp | 61 ++++++++++--------- src/SingleLayerOptics/src/BSDFLayer.cpp | 10 +-- src/SingleLayerOptics/src/BSDFLayer.hpp | 8 +-- .../units/CircularPerforatedShade1.unit.cpp | 2 +- .../units/CircularPerforatedShade2.unit.cpp | 2 +- ...larPerforatedShadeMultiWavelength.unit.cpp | 2 +- .../CircularPerforatedShadeNFRC18000.unit.cpp | 2 +- .../tst/units/PerfectDiffuseShade1.unit.cpp | 2 +- .../RectangularPerforatedShade1.unit.cpp | 2 +- .../RectangularPerforatedShade2.unit.cpp | 2 +- .../units/SpecularAngularLayer_102.unit.cpp | 2 +- ...cularBSDFLayer_SingleBandMaterial.unit.cpp | 2 +- .../SpecularLayerMultiWavelength_102.unit.cpp | 2 +- .../tst/units/SpecularLayer_103.unit.cpp | 2 +- ...anDirectionalShadeCurvedMinus45_0.unit.cpp | 2 +- .../VenetianDirectionalShadeFlat0_1.unit.cpp | 2 +- .../VenetianDirectionalShadeFlat0_2.unit.cpp | 2 +- .../VenetianDirectionalShadeFlat45_5.unit.cpp | 2 +- ...onalShadeFlat45_5_Multiwavelength.unit.cpp | 2 +- ...netianUniformShadeCurvedMinus45_0.unit.cpp | 2 +- ...tianUniformShadeCurvedZeroAngle_0.unit.cpp | 2 +- 30 files changed, 114 insertions(+), 134 deletions(-) diff --git a/src/Common/src/mmap.hpp b/src/Common/src/mmap.hpp index 7d92351c..76add611 100644 --- a/src/Common/src/mmap.hpp +++ b/src/Common/src/mmap.hpp @@ -1,5 +1,4 @@ -#ifndef TUPLEASMAPKEY_VARIADICMAP_H -#define TUPLEASMAPKEY_VARIADICMAP_H +#pragma once #include @@ -10,8 +9,7 @@ namespace FenestrationCommon class mmap { public: - mmap() - {} + mmap() = default; T & operator()(const Values... a) { @@ -28,6 +26,3 @@ namespace FenestrationCommon }; } // namespace FenestrationCommon - - -#endif // TUPLEASMAPKEY_VARIADICMAP_H diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 5179d583..5b69b65e 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -163,7 +163,7 @@ namespace MultiLayerOptics const auto index = t_Layer.getBandIndex(curWL); assert(index > -1); - const CBSDFIntegrator currentLayer = aResults[static_cast(index)]; + const BSDFIntegrator currentLayer = aResults[static_cast(index)]; if(m_LayersWL.size() <= i) { diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp index 2647fd2c..deea773c 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp @@ -26,8 +26,8 @@ namespace MultiLayerOptics // CBSDFDoubleLayer ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - CBSDFDoubleLayer::CBSDFDoubleLayer(const CBSDFIntegrator & t_FrontLayer, - const CBSDFIntegrator & t_BackLayer) + CBSDFDoubleLayer::CBSDFDoubleLayer(const BSDFIntegrator & t_FrontLayer, + const BSDFIntegrator & t_BackLayer) { const SquareMatrix aLambda = t_FrontLayer.lambdaMatrix(); const auto InterRefl1 = interReflectance(aLambda, @@ -59,12 +59,12 @@ namespace MultiLayerOptics InterRefl1, aLambda); - m_Results = CBSDFIntegrator(t_FrontLayer); + m_Results = BSDFIntegrator(t_FrontLayer); m_Results.setMatrices(m_Tf, m_Rf, Side::Front); m_Results.setMatrices(m_Tb, m_Rb, Side::Back); } - CBSDFIntegrator CBSDFDoubleLayer::value() const + BSDFIntegrator CBSDFDoubleLayer::value() const { return m_Results; } @@ -99,7 +99,7 @@ namespace MultiLayerOptics ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// CEquivalentBSDFLayerSingleBand::CEquivalentBSDFLayerSingleBand( - const CBSDFIntegrator & t_Layer, + const BSDFIntegrator & t_Layer, const std::vector & jscPrimeFront, const std::vector & jscPrimeBack) : m_PropertiesCalculated(false) @@ -122,7 +122,7 @@ namespace MultiLayerOptics m_JSCPrime[Side::Back].emplace_back( std::vector(t_Layer.lambdaVector().size(), 0)); } - m_EquivalentLayer = CBSDFIntegrator(t_Layer); + m_EquivalentLayer = BSDFIntegrator(t_Layer); for(Side aSide : EnumSide()) { m_A[aSide] = std::vector>(); @@ -163,7 +163,7 @@ namespace MultiLayerOptics return m_Layers.size(); } - void CEquivalentBSDFLayerSingleBand::addLayer(const CBSDFIntegrator & t_Layer, + void CEquivalentBSDFLayerSingleBand::addLayer(const BSDFIntegrator & t_Layer, const std::vector & jcsFront, const std::vector & jcsBack) { @@ -205,7 +205,7 @@ namespace MultiLayerOptics } m_Backward.push_back(m_EquivalentLayer); - CBSDFIntegrator bLayer = m_Layers[numberOfLayers - 1]; + BSDFIntegrator bLayer = m_Layers[numberOfLayers - 1]; for(size_t i = numberOfLayers - 1; i > 1; --i) { bLayer = CBSDFDoubleLayer(m_Layers[i - 1], bLayer).value(); @@ -233,8 +233,8 @@ namespace MultiLayerOptics } else { - CBSDFIntegrator & Layer1 = m_Forward[i]; - CBSDFIntegrator & Layer2 = m_Backward[i + 1]; + BSDFIntegrator & Layer1 = m_Forward[i]; + BSDFIntegrator & Layer2 = m_Backward[i + 1]; const auto InterRefl2{interReflectance(m_Lambda, Layer2.at(Side::Front, PropertySimple::R), Layer1.at(Side::Back, PropertySimple::R))}; @@ -257,8 +257,8 @@ namespace MultiLayerOptics } else { - CBSDFIntegrator & Layer1 = m_Forward[i - 1]; - CBSDFIntegrator & Layer2 = m_Backward[i]; + BSDFIntegrator & Layer1 = m_Forward[i - 1]; + BSDFIntegrator & Layer2 = m_Backward[i]; const auto InterRefl1{interReflectance(m_Lambda, Layer1.at(Side::Back, PropertySimple::R), Layer2.at(Side::Front, PropertySimple::R))}; diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp index fb3c210f..fca1fa0e 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp @@ -22,10 +22,10 @@ namespace MultiLayerOptics class CBSDFDoubleLayer { public: - CBSDFDoubleLayer(const SingleLayerOptics::CBSDFIntegrator & t_FrontLayer, - const SingleLayerOptics::CBSDFIntegrator & t_BackLayer); + CBSDFDoubleLayer(const SingleLayerOptics::BSDFIntegrator & t_FrontLayer, + const SingleLayerOptics::BSDFIntegrator & t_BackLayer); - [[nodiscard]] SingleLayerOptics::CBSDFIntegrator value() const; + [[nodiscard]] SingleLayerOptics::BSDFIntegrator value() const; private: static FenestrationCommon::SquareMatrix @@ -42,7 +42,7 @@ namespace MultiLayerOptics const FenestrationCommon::SquareMatrix & t_InterRefl, const FenestrationCommon::SquareMatrix & t_Lambda); - SingleLayerOptics::CBSDFIntegrator m_Results; + SingleLayerOptics::BSDFIntegrator m_Results; FenestrationCommon::SquareMatrix m_Tf; FenestrationCommon::SquareMatrix m_Tb; @@ -55,10 +55,10 @@ namespace MultiLayerOptics { public: explicit CEquivalentBSDFLayerSingleBand( - const SingleLayerOptics::CBSDFIntegrator & t_Layer, + const SingleLayerOptics::BSDFIntegrator & t_Layer, const std::vector & jscPrimeFront = std::vector(), const std::vector & jscPrimeBack = std::vector()); - void addLayer(const SingleLayerOptics::CBSDFIntegrator & t_Layer, + void addLayer(const SingleLayerOptics::BSDFIntegrator & t_Layer, const std::vector & jcsFront = std::vector(), const std::vector & jcsBack = std::vector()); void BuildForwardAndBackwardLayers(size_t numberOfLayers); @@ -88,12 +88,12 @@ namespace MultiLayerOptics const FenestrationCommon::SquareMatrix & t_R, const FenestrationCommon::SquareMatrix & t_T) const; - SingleLayerOptics::CBSDFIntegrator m_EquivalentLayer; - std::vector m_Layers; + SingleLayerOptics::BSDFIntegrator m_EquivalentLayer; + std::vector m_Layers; // Forward and backward layers are used for calculation of equivalent absorptances - std::vector m_Forward; - std::vector m_Backward; + std::vector m_Forward; + std::vector m_Backward; // Equations for absorptance calculations are described in "Klems-Matrix Layer Calculations" // document. Two equations (3.7a) and (3.7b) are used to calculate front and back diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp index 1b84bdf7..670cc1bf 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp @@ -278,7 +278,7 @@ namespace MultiLayerOptics std::vector m_IncomingSpectra; std::vector m_IncomingSolar; - SingleLayerOptics::CBSDFIntegrator m_Results; + SingleLayerOptics::BSDFIntegrator m_Results; // Absorptances of every layer and every incoming direction in BSDF integrated over given // range diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp index 4220530b..438c61ad 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp @@ -298,8 +298,8 @@ class TestDoubleLayerBSDFPerforated : public testing::Test auto aShade = CBSDFLayerMaker::getCircularPerforatedLayer(perfMaterial, aBSDF, x, y, thickness, radius); - CBSDFIntegrator aLayer1 = aLayer102->getResults(); - CBSDFIntegrator aLayer2 = aShade->getResults(); + BSDFIntegrator aLayer1 = aLayer102->getResults(); + BSDFIntegrator aLayer2 = aShade->getResults(); m_DoubleLayer = std::make_shared(aLayer1, aLayer2); } @@ -315,7 +315,7 @@ TEST_F(TestDoubleLayerBSDFPerforated, TestDoubleLayerBSDF) { SCOPED_TRACE("Begin Test: Double Layer BSDF."); - CBSDFIntegrator aLayer = getDoubleLayer()->value(); + BSDFIntegrator aLayer = getDoubleLayer()->value(); // Front transmittance auto Tf = aLayer.getMatrix(Side::Front, PropertySimple::T); diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp index 5d5bf990..52e3b54a 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp @@ -286,8 +286,8 @@ class TestDoubleLayerBSDFSpecular : public testing::Test auto aLayer102 = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); aLayer102->setSourceData(aSolarRadiation); - CBSDFIntegrator aLayer1 = aLayer102->getResults(); - CBSDFIntegrator aLayer2 = aLayer102->getResults(); + BSDFIntegrator aLayer1 = aLayer102->getResults(); + BSDFIntegrator aLayer2 = aLayer102->getResults(); m_DoubleLayer = std::make_shared(aLayer1, aLayer2); } @@ -303,7 +303,7 @@ TEST_F(TestDoubleLayerBSDFSpecular, TestDoubleLayerBSDF) { SCOPED_TRACE("Begin Test: Double Layer BSDF."); - CBSDFIntegrator aLayer = getDoubleLayer()->value(); + BSDFIntegrator aLayer = getDoubleLayer()->value(); auto T = aLayer.getMatrix(Side::Front, PropertySimple::T); size_t matrixSize = T.size(); diff --git a/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp index 7ee30709..c09e5e0f 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp @@ -297,9 +297,9 @@ class TestEquivalentBSDFTriplePerforatedInBetween : public testing::Test auto aShade = CBSDFLayerMaker::getCircularPerforatedLayer(perfMaterial, aBSDF, x, y, thickness, radius); - CBSDFIntegrator aLayer1 = aLayer102->getResults(); - CBSDFIntegrator aLayer2 = aShade->getResults(); - CBSDFIntegrator aLayer3 = aLayer102->getResults(); + BSDFIntegrator aLayer1 = aLayer102->getResults(); + BSDFIntegrator aLayer2 = aShade->getResults(); + BSDFIntegrator aLayer3 = aLayer102->getResults(); m_EquivalentBSDFLayer = std::make_shared(aLayer1); m_EquivalentBSDFLayer->addLayer(aLayer2); diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.cpp b/src/SingleLayerOptics/src/BSDFIntegrator.cpp index ff80847e..b157e996 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.cpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.cpp @@ -7,23 +7,7 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { - CBSDFIntegrator::CBSDFIntegrator(const CBSDFIntegrator & t_Integrator) : - m_Directions(t_Integrator.m_Directions), - m_DimMatrices(m_Directions.size()), - m_HemisphericalCalculated(t_Integrator.m_HemisphericalCalculated), - m_DiffuseDiffuseCalculated(t_Integrator.m_DiffuseDiffuseCalculated) - { - for(auto t_Side : EnumSide()) - { - for(auto t_Property : EnumPropertySimple()) - { - m_Matrix[std::make_pair(t_Side, t_Property)] = SquareMatrix(m_DimMatrices); - m_Hem[std::make_pair(t_Side, t_Property)] = std::vector(m_DimMatrices); - } - } - } - - CBSDFIntegrator::CBSDFIntegrator(const CBSDFDirections & t_Directions) : + BSDFIntegrator::BSDFIntegrator(const CBSDFDirections & t_Directions) : m_Directions(t_Directions), m_DimMatrices(m_Directions.size()), m_HemisphericalCalculated(false), @@ -39,25 +23,25 @@ namespace SingleLayerOptics } } - double CBSDFIntegrator::DiffDiff(const Side t_Side, const PropertySimple t_Property) + double BSDFIntegrator::DiffDiff(const Side t_Side, const PropertySimple t_Property) { calcDiffuseDiffuse(); - return m_MapDiffDiff.at(t_Side, t_Property); + return m_DiffDiff.at(t_Side, t_Property); } - SquareMatrix & CBSDFIntegrator::getMatrix(const Side t_Side, const PropertySimple t_Property) + SquareMatrix & BSDFIntegrator::getMatrix(const Side t_Side, const PropertySimple t_Property) { return m_Matrix[std::make_pair(t_Side, t_Property)]; } const FenestrationCommon::SquareMatrix & - CBSDFIntegrator::at(const FenestrationCommon::Side t_Side, + BSDFIntegrator::at(const FenestrationCommon::Side t_Side, const FenestrationCommon::PropertySimple t_Property) const { return m_Matrix.at(std::make_pair(t_Side, t_Property)); } - void CBSDFIntegrator::setMatrices(const SquareMatrix & t_Tau, + void BSDFIntegrator::setMatrices(const SquareMatrix & t_Tau, const SquareMatrix & t_Rho, Side t_Side) { @@ -65,7 +49,7 @@ namespace SingleLayerOptics m_Matrix[std::make_pair(t_Side, PropertySimple::R)] = t_Rho; } - double CBSDFIntegrator::DirDir(const Side t_Side, + double BSDFIntegrator::DirDir(const Side t_Side, const PropertySimple t_Property, const double t_Theta, const double t_Phi) const @@ -76,7 +60,7 @@ namespace SingleLayerOptics return tau * lambda; } - double CBSDFIntegrator::DirDir(const Side t_Side, + double BSDFIntegrator::DirDir(const Side t_Side, const PropertySimple t_Property, const size_t Index) const { @@ -85,20 +69,20 @@ namespace SingleLayerOptics return tau * lambda; } - std::vector CBSDFIntegrator::DirHem(const FenestrationCommon::Side t_Side, + std::vector BSDFIntegrator::DirHem(const FenestrationCommon::Side t_Side, const FenestrationCommon::PropertySimple t_Property) { calcHemispherical(); return m_Hem.at(std::make_pair(t_Side, t_Property)); } - std::vector CBSDFIntegrator::Abs(Side t_Side) + std::vector BSDFIntegrator::Abs(Side t_Side) { calcHemispherical(); return m_Abs.at(t_Side); } - double CBSDFIntegrator::DirHem(const Side t_Side, + double BSDFIntegrator::DirHem(const Side t_Side, const PropertySimple t_Property, const double t_Theta, const double t_Phi) @@ -107,28 +91,28 @@ namespace SingleLayerOptics return DirHem(t_Side, t_Property)[index]; } - double CBSDFIntegrator::Abs(const Side t_Side, const double t_Theta, const double t_Phi) + double BSDFIntegrator::Abs(const Side t_Side, const double t_Theta, const double t_Phi) { const auto index = m_Directions.getNearestBeamIndex(t_Theta, t_Phi); return Abs(t_Side)[index]; } - double CBSDFIntegrator::Abs(const Side t_Side, const size_t Index) + double BSDFIntegrator::Abs(const Side t_Side, const size_t Index) { return Abs(t_Side)[Index]; } - std::vector CBSDFIntegrator::lambdaVector() const + std::vector BSDFIntegrator::lambdaVector() const { return m_Directions.lambdaVector(); } - SquareMatrix CBSDFIntegrator::lambdaMatrix() const + SquareMatrix BSDFIntegrator::lambdaMatrix() const { return m_Directions.lambdaMatrix(); } - double CBSDFIntegrator::integrate(SquareMatrix const & t_Matrix) const + double BSDFIntegrator::integrate(SquareMatrix const & t_Matrix) const { using ConstantsData::WCE_PI; double sum = 0; @@ -142,7 +126,7 @@ namespace SingleLayerOptics return sum / WCE_PI; } - void CBSDFIntegrator::calcDiffuseDiffuse() + void BSDFIntegrator::calcDiffuseDiffuse() { if(!m_DiffuseDiffuseCalculated) { @@ -150,19 +134,19 @@ namespace SingleLayerOptics { for(auto t_Property : EnumPropertySimple()) { - m_MapDiffDiff(t_Side, t_Property) = integrate(getMatrix(t_Side, t_Property)); + m_DiffDiff(t_Side, t_Property) = integrate(getMatrix(t_Side, t_Property)); } } m_DiffuseDiffuseCalculated = true; } } - size_t CBSDFIntegrator::getNearestBeamIndex(const double t_Theta, const double t_Phi) const + size_t BSDFIntegrator::getNearestBeamIndex(const double t_Theta, const double t_Phi) const { return m_Directions.getNearestBeamIndex(t_Theta, t_Phi); } - void CBSDFIntegrator::calcHemispherical() + void BSDFIntegrator::calcHemispherical() { if(!m_HemisphericalCalculated) { @@ -189,7 +173,7 @@ namespace SingleLayerOptics m_HemisphericalCalculated = true; } } - double CBSDFIntegrator::AbsDiffDiff(FenestrationCommon::Side t_Side) + double BSDFIntegrator::AbsDiffDiff(FenestrationCommon::Side t_Side) { return 1 - DiffDiff(t_Side, PropertySimple::T) - DiffDiff(t_Side, PropertySimple::R); } diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.hpp b/src/SingleLayerOptics/src/BSDFIntegrator.hpp index 0ff5e28d..b3101505 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.hpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.hpp @@ -18,16 +18,13 @@ namespace FenestrationCommon namespace SingleLayerOptics { - typedef std::pair - pair_Side_PropertySimple; - // Layer results from BSDF directions. - class CBSDFIntegrator + class BSDFIntegrator { public: - CBSDFIntegrator() = default; - CBSDFIntegrator(const CBSDFIntegrator & t_Integrator); - CBSDFIntegrator(const CBSDFDirections & t_Directions); + BSDFIntegrator() = default; + BSDFIntegrator(const BSDFIntegrator & t_Integrator) = default; + BSDFIntegrator(const CBSDFDirections & t_Directions); // Result matrices FenestrationCommon::SquareMatrix & getMatrix(FenestrationCommon::Side t_Side, @@ -41,13 +38,13 @@ namespace SingleLayerOptics FenestrationCommon::Side t_Side); // Direct-direct components - double DirDir(FenestrationCommon::Side t_Side, - FenestrationCommon::PropertySimple t_Property, - double t_Theta = 0, - double t_Phi = 0) const; - double DirDir(FenestrationCommon::Side t_Side, - FenestrationCommon::PropertySimple t_Property, - size_t Index) const; + [[nodiscard]] double DirDir(FenestrationCommon::Side t_Side, + FenestrationCommon::PropertySimple t_Property, + double t_Theta = 0, + double t_Phi = 0) const; + [[nodiscard]] double DirDir(FenestrationCommon::Side t_Side, + FenestrationCommon::PropertySimple t_Property, + size_t Index) const; // Directional hemispherical results for every direction in BSDF definition std::vector DirHem(FenestrationCommon::Side t_Side, @@ -55,25 +52,25 @@ namespace SingleLayerOptics std::vector Abs(FenestrationCommon::Side t_Side); // Directional hemispherical results for given Theta and Phi direction - double DirHem(FenestrationCommon::Side t_Side, - FenestrationCommon::PropertySimple t_Property, - double t_Theta, - double t_Phi); - double Abs(FenestrationCommon::Side t_Side, double t_Theta, double t_Phi); - double Abs(FenestrationCommon::Side t_Side, size_t Index); + [[nodiscard]] double DirHem(FenestrationCommon::Side t_Side, + FenestrationCommon::PropertySimple t_Property, + double t_Theta, + double t_Phi); + [[nodiscard]] double Abs(FenestrationCommon::Side t_Side, double t_Theta, double t_Phi); + [[nodiscard]] double Abs(FenestrationCommon::Side t_Side, size_t Index); // std::shared_ptr< const CBSDFDirections > getDirections() const; - double DiffDiff(FenestrationCommon::Side t_Side, - FenestrationCommon::PropertySimple t_Property); + [[nodiscard]] double DiffDiff(FenestrationCommon::Side t_Side, + FenestrationCommon::PropertySimple t_Property); - double AbsDiffDiff(FenestrationCommon::Side t_Side); + [[nodiscard]] double AbsDiffDiff(FenestrationCommon::Side t_Side); // Lambda values for the layer. - std::vector lambdaVector() const; - FenestrationCommon::SquareMatrix lambdaMatrix() const; + [[nodiscard]] std::vector lambdaVector() const; + [[nodiscard]] FenestrationCommon::SquareMatrix lambdaMatrix() const; - size_t getNearestBeamIndex(double t_Theta, double t_Phi) const; + [[nodiscard]] size_t getNearestBeamIndex(double t_Theta, double t_Phi) const; protected: CBSDFDirections m_Directions; @@ -81,20 +78,24 @@ namespace SingleLayerOptics private: // Hemispherical integration over m_Directions - double integrate(FenestrationCommon::SquareMatrix const & t_Matrix) const; + [[nodiscard]] double integrate(FenestrationCommon::SquareMatrix const & t_Matrix) const; void calcDiffuseDiffuse(); void calcHemispherical(); - std::map m_Matrix; - std::map> m_Hem; + std::map, + FenestrationCommon::SquareMatrix> + m_Matrix; + std::map, + std::vector> + m_Hem; std::map> m_Abs; bool m_HemisphericalCalculated; bool m_DiffuseDiffuseCalculated; FenestrationCommon:: mmap - m_MapDiffDiff; + m_DiffDiff; }; } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index 1c284335..e70231d8 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -35,7 +35,7 @@ namespace SingleLayerOptics return m_BSDFHemisphere.getDirections(t_Side); } - CBSDFIntegrator CBSDFLayer::getResults() + BSDFIntegrator CBSDFLayer::getResults() { if(!m_Calculated) { @@ -45,7 +45,7 @@ namespace SingleLayerOptics return m_Results; } - std::vector CBSDFLayer::getWavelengthResults() + std::vector CBSDFLayer::getWavelengthResults() { if(!m_CalculatedWV) { @@ -108,9 +108,8 @@ namespace SingleLayerOptics size_t numWV = aTau.size(); for(size_t j = 0; j < numWV; ++j) { - CBSDFIntegrator & aResults = m_WVResults[j]; - auto & tau = aResults.getMatrix(aSide, PropertySimple::T); - auto & rho = aResults.getMatrix(aSide, PropertySimple::R); + auto & tau = m_WVResults[j].getMatrix(aSide, PropertySimple::T); + auto & rho = m_WVResults[j].getMatrix(aSide, PropertySimple::R); tau(i, i) += aTau[j] / Lambda; rho(i, i) += aRho[j] / Lambda; } @@ -150,6 +149,7 @@ namespace SingleLayerOptics void CBSDFLayer::fillWLResultsFromMaterialCell() { + m_WVResults.clear(); size_t size = m_Cell->getBandSize(); for(size_t i = 0; i < size; ++i) { diff --git a/src/SingleLayerOptics/src/BSDFLayer.hpp b/src/SingleLayerOptics/src/BSDFLayer.hpp index c420de25..bf2c05f1 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.hpp +++ b/src/SingleLayerOptics/src/BSDFLayer.hpp @@ -36,12 +36,12 @@ namespace SingleLayerOptics void setSourceData(FenestrationCommon::CSeries & t_SourceData); // BSDF results for the enire spectrum range of the material in the cell - CBSDFIntegrator getResults(); + BSDFIntegrator getResults(); const CBSDFDirections & getDirections(BSDFDirection t_Side) const; // BSDF results for each wavelenght given in specular cell - std::vector getWavelengthResults(); + std::vector getWavelengthResults(); int getBandIndex(double t_Wavelength); @@ -77,9 +77,9 @@ namespace SingleLayerOptics const CBSDFHemisphere m_BSDFHemisphere; std::shared_ptr m_Cell; - CBSDFIntegrator m_Results; + BSDFIntegrator m_Results; // Results over each wavelength - std::vector m_WVResults; + std::vector m_WVResults; private: void calc_dir_dir(); diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp index 28747075..27622aba 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp @@ -51,7 +51,7 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.32084455059221467, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp index 233352c5..40f3750b 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp @@ -51,7 +51,7 @@ TEST_F(TestCircularPerforatedShade2, TestSolarProperties) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.2, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp index 6c722a0c..9d2b176b 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp @@ -58,7 +58,7 @@ TEST_F(TestCircularPerforatedShadeMultiWavelength, TestCircularPerforatedMultiWa std::shared_ptr aLayer = getLayer(); - std::vector aResults = aLayer->getWavelengthResults(); + std::vector aResults = aLayer->getWavelengthResults(); const auto wavelengths{aLayer->getBandWavelengths()}; const std::vector correctWavelengths{0.3, 0.38, 0.780002, 2.5}; diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp index 7d03848b..ac05aa9f 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp @@ -51,7 +51,7 @@ TEST_F(TestCircularPerforatedShadeNFRC18000, TestSolarProperties) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.257367, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp index 0324d282..c6b53ae1 100644 --- a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp @@ -43,7 +43,7 @@ TEST_F(TestPerfectDiffuseShade1, TestSolarProperties) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.000000000, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp index 1745c9a3..d1c689ba 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp @@ -51,7 +51,7 @@ TEST_F(TestRectangularPerforatedShade1, TestSolarProperties) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.041876313, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp index 235d69df..d39df38d 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp @@ -51,7 +51,7 @@ TEST_F(TestRectangularPerforatedShade2, TestSolarProperties) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.112843786, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp index 023a4d42..0f4b3b09 100644 --- a/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp @@ -678,7 +678,7 @@ TEST_F(TestSpecularAngularLayer_102, TestSpecular1) std::shared_ptr aLayer = getLayer(); - CBSDFIntegrator aResults = aLayer->getResults(); + BSDFIntegrator aResults = aLayer->getResults(); double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.64541405979702648, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp index 8320b6cd..f54e2eb5 100644 --- a/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp @@ -84,7 +84,7 @@ TEST_F(TestSpecularBSDFLayer_SingleBandMaterial, SingleBandSpecular) { std::shared_ptr aLayer = getLayer(); - CBSDFIntegrator aResults = aLayer->getResults(); + BSDFIntegrator aResults = aLayer->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.0, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp index b950e243..5be8fc73 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp @@ -56,7 +56,7 @@ TEST_F(TestSpecularLayerMultiWavelength_102, TestSpecular1) std::shared_ptr aLayer = getLayer(); - std::vector aResults = aLayer->getWavelengthResults(); + std::vector aResults = aLayer->getWavelengthResults(); size_t correctSize = 5; diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp index 26c5d99d..6d9cee86 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp @@ -142,7 +142,7 @@ TEST_F(TestSpecularLayer_103, TestSpecular1) std::shared_ptr aLayer = getLayer(); - CBSDFIntegrator aResults = aLayer->getResults(); + BSDFIntegrator aResults = aLayer->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.68823803381618487, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp index 80f54e92..c2d8b60d 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp @@ -64,7 +64,7 @@ TEST_F(TestVenetianDirectionalShadeCurvedMinus45_0, TestVenetian1) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.382240, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp index 84637425..18035646 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp @@ -63,7 +63,7 @@ TEST_F(TestVenetianDirectionalShadeFlat0_1, TestVenetian1) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.44649813630049223, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp index 322b4852..1febb840 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp @@ -63,7 +63,7 @@ TEST_F(TestVenetianDirectionalShadeFlat0_2, TestVenetian1) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.45408806110142574, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp index 681456e6..800cd96d 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp @@ -63,7 +63,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5, TestVenetian1) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.38194085830991792, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp index 1fa3d6b2..d4c01454 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp @@ -67,7 +67,7 @@ TEST_F(TestVenetianDirectionalShadeFlat45_5_Multiwavelength, TestVenetianMultiWa std::shared_ptr aLayer = getLayer(); - std::vector aResults = aLayer->getWavelengthResults(); + std::vector aResults = aLayer->getWavelengthResults(); const auto wavelengths{aLayer->getBandWavelengths()}; const std::vector correctWavelengths{0.3, 0.38, 0.780001, 2.5}; diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp index 46359ed3..f58144b9 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp @@ -61,7 +61,7 @@ TEST_F(TestVenetianUniformShadeCurvedMinus45_0, TestVenetian1) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.384231, tauDiff, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp index 42486beb..bd901087 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp @@ -61,7 +61,7 @@ TEST_F(TestVenetianUniformShadeCurvedZeroAngle_0, TestVenetian1) std::shared_ptr aShade = GetShade(); - CBSDFIntegrator aResults = aShade->getResults(); + BSDFIntegrator aResults = aShade->getResults(); double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); EXPECT_NEAR(0.422932, tauDiff, 1e-6); From b5ab4e4aa05fe237b4e75deecab33b81ac76c104 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 27 Jul 2022 16:02:54 -0700 Subject: [PATCH 12/81] AngleLimits is not using inheritance for center and other patches anymore. --- src/SingleLayerOptics/src/BSDFDirections.cpp | 29 ++++----- src/SingleLayerOptics/src/BSDFDirections.hpp | 3 + src/SingleLayerOptics/src/BSDFPatch.cpp | 62 +++++++++---------- src/SingleLayerOptics/src/BSDFPatch.hpp | 36 +++++------ .../tst/units/AngleLimits.unit.cpp | 27 -------- .../tst/units/BSDFPatches.unit.cpp | 43 +++++++++++++ .../tst/units/BSDFQuarterBasis.unit.cpp | 5 +- 7 files changed, 105 insertions(+), 100 deletions(-) delete mode 100644 src/SingleLayerOptics/tst/units/AngleLimits.unit.cpp create mode 100644 src/SingleLayerOptics/tst/units/BSDFPatches.unit.cpp diff --git a/src/SingleLayerOptics/src/BSDFDirections.cpp b/src/SingleLayerOptics/src/BSDFDirections.cpp index 37126eca..80ad4390 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.cpp +++ b/src/SingleLayerOptics/src/BSDFDirections.cpp @@ -50,21 +50,12 @@ namespace SingleLayerOptics const auto thetaLimits{ThetaLimits.getThetaLimits()}; double lowerTheta = thetaLimits[0]; - for(size_t i = 1; i < thetaLimits.size(); ++i) + for(size_t thetaIndex = 1; thetaIndex < thetaLimits.size(); ++thetaIndex) { - double upperTheta = thetaLimits[i]; - std::shared_ptr currentTheta = nullptr; - if(i == 1) - { - currentTheta = std::make_shared(upperTheta); - } - else - { - currentTheta = std::make_shared(lowerTheta, upperTheta); - } + double upperTheta = thetaLimits[thetaIndex]; + const auto currentThetaLimits = createAngleLimits(lowerTheta, upperTheta, thetaIndex); - - const auto nPhis = numPhiAngles[i - 1]; + const auto nPhis = numPhiAngles[thetaIndex - 1]; CPhiLimits phiAngles(nPhis); auto phiLimits = phiAngles.getPhiLimits(); double lowerPhi = phiLimits[0]; @@ -79,9 +70,9 @@ namespace SingleLayerOptics { upperPhi += 180; } - CAngleLimits currentPhi(lowerPhi, upperPhi); - CBSDFPatch currentPatch(currentTheta, currentPhi); - m_Patches.push_back(currentPatch); + AngleLimits currentPhiLimits(lowerPhi, upperPhi); + CBSDFPatch currentPatch(currentThetaLimits, currentPhiLimits); + m_Patches.emplace_back(currentThetaLimits, currentPhiLimits); lowerPhi = upperPhi; } lowerTheta = upperTheta; @@ -143,6 +134,12 @@ namespace SingleLayerOptics return index; } + AngleLimits + CBSDFDirections::createAngleLimits(double lowerAngle, double upperAngle, size_t patchIndex) + { + return patchIndex == 1 ? AngleLimits(upperAngle) : AngleLimits(lowerAngle, upperAngle); + } + ///////////////////////////////////////////////////////////////// /// CBSDFHemisphere ///////////////////////////////////////////////////////////////// diff --git a/src/SingleLayerOptics/src/BSDFDirections.hpp b/src/SingleLayerOptics/src/BSDFDirections.hpp index b1e8f376..053757c4 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.hpp +++ b/src/SingleLayerOptics/src/BSDFDirections.hpp @@ -49,6 +49,9 @@ namespace SingleLayerOptics std::vector m_Patches; std::vector m_LambdaVector; FenestrationCommon::SquareMatrix m_LambdaMatrix; + + //! Function that will create angle limits based on patch index. + AngleLimits createAngleLimits(double lowerAngle, double upperAngle, size_t patchIndex); }; enum class BSDFBasis diff --git a/src/SingleLayerOptics/src/BSDFPatch.cpp b/src/SingleLayerOptics/src/BSDFPatch.cpp index c7ffc1f4..c2cc81b2 100644 --- a/src/SingleLayerOptics/src/BSDFPatch.cpp +++ b/src/SingleLayerOptics/src/BSDFPatch.cpp @@ -1,5 +1,6 @@ #include +#include #include "WCECommon.hpp" #include "BSDFPatch.hpp" @@ -8,67 +9,60 @@ namespace SingleLayerOptics { ///////////////////////////////////////////////////////////////// - /// CAngleLimits + /// AngleLimits ///////////////////////////////////////////////////////////////// - CAngleLimits::CAngleLimits(double const t_Low, double const t_High) : + AngleLimits::AngleLimits(double const t_Low, double const t_High) : m_Low(t_Low), m_High(t_High) {} - double CAngleLimits::low() const + AngleLimits::AngleLimits(double t_High) : m_Type(Type::Central), m_Low(0), m_High(t_High) + {} + + double AngleLimits::low() const { return m_Low; } - double CAngleLimits::high() const + double AngleLimits::high() const { return m_High; } - double CAngleLimits::delta() const + double AngleLimits::delta() const { return m_High - m_Low; } - bool CAngleLimits::isInLimits(const double t_Angle) const + bool AngleLimits::isInLimits(const double t_Angle) const { // To assure that negative patch angles are covered as well double aAngle = (m_Low + 360) < t_Angle ? t_Angle - 360 : t_Angle; return (aAngle >= m_Low) && (aAngle <= m_High); } - double CAngleLimits::average() const + double AngleLimits::average() const { - return (m_Low + m_High) / 2; - } - - ///////////////////////////////////////////////////////////////// - /// CCentralAngleLimits - ///////////////////////////////////////////////////////////////// - CCentralAngleLimits::CCentralAngleLimits(const double t_High) : CAngleLimits(0, t_High) - {} - - double CCentralAngleLimits::average() const - { - return m_Low; + const std::map> func{ + {Type::NonCentral, [&]() { return (m_Low + m_High) / 2; }}, + {Type::Central, [&]() { return m_Low; }}}; + return func.at(m_Type)(); } ///////////////////////////////////////////////////////////////// /// CBSDFPatch ///////////////////////////////////////////////////////////////// - CBSDFPatch::CBSDFPatch(const std::shared_ptr & t_Theta, - const CAngleLimits & t_Phi) : + CBSDFPatch::CBSDFPatch(const AngleLimits & t_Theta, const AngleLimits & t_Phi) : m_Theta(t_Theta), - m_Phi(t_Phi) - { - calculateLambda(); - } + m_Phi(t_Phi), + m_Lambda(calculateLambda(m_Theta.low(), m_Theta.high(), m_Phi.delta())) + {} CBeamDirection CBSDFPatch::centerPoint() const { - return CBeamDirection(m_Theta->average(), m_Phi.average()); + return {m_Theta.average(), m_Phi.average()}; } double CBSDFPatch::lambda() const @@ -78,19 +72,19 @@ namespace SingleLayerOptics bool CBSDFPatch::isInPatch(const double t_Theta, const double t_Phi) const { - return m_Theta->isInLimits(t_Theta) && m_Phi.isInLimits(t_Phi); + return m_Theta.isInLimits(t_Theta) && m_Phi.isInLimits(t_Phi); } - void CBSDFPatch::calculateLambda() + double CBSDFPatch::calculateLambda(double lowerTheta, double upperTheta, double phiDelta) { using ConstantsData::WCE_PI; - const double thetaLow = m_Theta->low() * WCE_PI / 180; - const double thetaHight = m_Theta->high() * WCE_PI / 180; - const double deltaPhi = m_Phi.delta() * WCE_PI / 180; - m_Lambda = - 0.5 * deltaPhi - * (std::sin(thetaHight) * std::sin(thetaHight) - std::sin(thetaLow) * std::sin(thetaLow)); + const double thetaLow = lowerTheta * WCE_PI / 180; + const double thetaHigh = upperTheta * WCE_PI / 180; + const double deltaPhi = phiDelta * WCE_PI / 180; + return 0.5 * deltaPhi + * (std::sin(thetaHigh) * std::sin(thetaHigh) + - std::sin(thetaLow) * std::sin(thetaLow)); } } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/BSDFPatch.hpp b/src/SingleLayerOptics/src/BSDFPatch.hpp index c245de13..24b31bcf 100644 --- a/src/SingleLayerOptics/src/BSDFPatch.hpp +++ b/src/SingleLayerOptics/src/BSDFPatch.hpp @@ -7,40 +7,36 @@ namespace SingleLayerOptics { class CBeamDirection; - class CAngleLimits + class AngleLimits { public: - CAngleLimits(double const t_Low, double const t_High); - double low() const; - double high() const; - double delta() const; - bool isInLimits(const double t_Angle) const; + AngleLimits(double t_Low, double t_High); + AngleLimits(double t_High); + [[nodiscard]] double low() const; + [[nodiscard]] double high() const; + [[nodiscard]] double delta() const; + [[nodiscard]] bool isInLimits(const double t_Angle) const; virtual double average() const; protected: + enum class Type{Central, NonCentral}; + Type m_Type{Type::NonCentral}; double m_Low; double m_High; }; - class CCentralAngleLimits : public CAngleLimits - { - public: - explicit CCentralAngleLimits(double t_High); - double average() const override; - }; - class CBSDFPatch { public: - CBSDFPatch(const std::shared_ptr & t_Theta, const CAngleLimits & t_Phi); - CBeamDirection centerPoint() const; - double lambda() const; - bool isInPatch(double t_Theta, double t_Phi) const; + CBSDFPatch(const AngleLimits & t_Theta, const AngleLimits & t_Phi); + [[nodiscard]] CBeamDirection centerPoint() const; + [[nodiscard]] double lambda() const; + [[nodiscard]] bool isInPatch(double t_Theta, double t_Phi) const; private: - void calculateLambda(); - std::shared_ptr m_Theta; - CAngleLimits m_Phi; + double calculateLambda(double lowerTheta, double upperTheta, double phiDelta); + AngleLimits m_Theta; + AngleLimits m_Phi; double m_Lambda; }; diff --git a/src/SingleLayerOptics/tst/units/AngleLimits.unit.cpp b/src/SingleLayerOptics/tst/units/AngleLimits.unit.cpp deleted file mode 100644 index b4e8eb09..00000000 --- a/src/SingleLayerOptics/tst/units/AngleLimits.unit.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include - -#include - -#include "WCESingleLayerOptics.hpp" - -using namespace SingleLayerOptics; - -class TestAngleLimits : public testing::Test -{ -protected: - virtual void SetUp() - {} -}; - -TEST_F(TestAngleLimits, TestAngleLimits1) -{ - SCOPED_TRACE("Begin Test: Angle limits 1."); - - CAngleLimits aLimits(-15, 15); - - const double angle = 350; - - bool isInLimits = aLimits.isInLimits(angle); - EXPECT_EQ(isInLimits, true); -} diff --git a/src/SingleLayerOptics/tst/units/BSDFPatches.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFPatches.unit.cpp new file mode 100644 index 00000000..4db239f3 --- /dev/null +++ b/src/SingleLayerOptics/tst/units/BSDFPatches.unit.cpp @@ -0,0 +1,43 @@ +#include +#include + +#include + +#include "WCESingleLayerOptics.hpp" + +class TestBSDFPatches : public testing::Test +{ +protected: + virtual void SetUp() + {} +}; + +TEST_F(TestBSDFPatches, TestAngleLimits1) +{ + SingleLayerOptics::AngleLimits aLimits(-15, 15); + + const double angle = 350; + + bool isInLimits = aLimits.isInLimits(angle); + EXPECT_EQ(isInLimits, true); + + EXPECT_NEAR(aLimits.average(), 0, 1e-6); + EXPECT_NEAR(aLimits.low(), -15, 1e-6); + EXPECT_NEAR(aLimits.high(), 15, 1e-6); + EXPECT_NEAR(aLimits.delta(), 30, 1e-6); +} + +TEST_F(TestBSDFPatches, TestAngleLimitsCenterPatch1) +{ + SingleLayerOptics::AngleLimits aLimits(15); + + const double angle = 0; + + bool isInLimits = aLimits.isInLimits(angle); + EXPECT_EQ(isInLimits, true); + + EXPECT_NEAR(aLimits.average(), 0, 1e-6); + EXPECT_NEAR(aLimits.low(), 0, 1e-6); + EXPECT_NEAR(aLimits.high(), 15, 1e-6); + EXPECT_NEAR(aLimits.delta(), 15, 1e-6); +} diff --git a/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp index 1a74e8a0..bb4c97c6 100644 --- a/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp @@ -64,10 +64,9 @@ TEST_F(TestBSDFQuarterBasis, TestQuarterBasisThetas) EXPECT_EQ(correctSize, aDirections.size()); std::vector thetaAngles; - std::vector::iterator it; - for(it = aDirections.begin(); it < aDirections.end(); ++it) + for(const auto & direction: aDirections) { - thetaAngles.push_back((*it).centerPoint().theta()); + thetaAngles.push_back(direction.centerPoint().theta()); } for(size_t i = 0; i < thetaAngles.size(); ++i) From f8d0cd481aab34bafcc79891d8f4b633fb7d9348 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 27 Jul 2022 16:57:47 -0700 Subject: [PATCH 13/81] BSDFDirections is now using transform to initialize some vectors. --- .../src/EquivalentBSDFLayer.cpp | 2 +- .../src/EquivalentBSDFLayer.hpp | 4 +- .../tst/units/InterReflectanceBSDF.unit.cpp | 4 +- src/SingleLayerOptics/src/BSDFDirections.cpp | 45 +++++++++---------- src/SingleLayerOptics/src/BSDFDirections.hpp | 10 ++--- src/SingleLayerOptics/src/BSDFIntegrator.cpp | 2 +- src/SingleLayerOptics/src/BSDFIntegrator.hpp | 6 +-- src/SingleLayerOptics/src/BSDFLayer.cpp | 4 +- src/SingleLayerOptics/src/BSDFLayer.hpp | 4 +- .../src/DirectionalDiffuseBSDFLayer.cpp | 2 +- .../src/UniformDiffuseBSDFLayer.cpp | 4 +- .../units/BSDFDirectionsClosestIndex.unit.cpp | 2 +- .../tst/units/BSDFQuarterBasis.unit.cpp | 2 +- 13 files changed, 45 insertions(+), 46 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 5b69b65e..f6c9876d 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -28,7 +28,7 @@ namespace MultiLayerOptics m_Layer.push_back(t_Layer); } - const CBSDFDirections & CEquivalentBSDFLayer::getDirections(const BSDFDirection t_Side) const + const BSDFDirections & CEquivalentBSDFLayer::getDirections(const BSDFDirection t_Side) const { return m_Layer[0]->getDirections(t_Side); } diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index b741c2f4..0ba45b9e 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -23,7 +23,7 @@ namespace FenestrationCommon namespace SingleLayerOptics { enum class BSDFDirection; - class CBSDFDirections; + class BSDFDirections; } // namespace SingleLayerOptics @@ -38,7 +38,7 @@ namespace MultiLayerOptics CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths); void addLayer(const std::shared_ptr & t_Layer); - const SingleLayerOptics::CBSDFDirections & + const SingleLayerOptics::BSDFDirections & getDirections(SingleLayerOptics::BSDFDirection t_Side) const; std::vector getCommonWavelengths() const; double getMinLambda() const; diff --git a/src/MultiLayerOptics/tst/units/InterReflectanceBSDF.unit.cpp b/src/MultiLayerOptics/tst/units/InterReflectanceBSDF.unit.cpp index b14a0f75..bfc48781 100644 --- a/src/MultiLayerOptics/tst/units/InterReflectanceBSDF.unit.cpp +++ b/src/MultiLayerOptics/tst/units/InterReflectanceBSDF.unit.cpp @@ -9,7 +9,7 @@ using FenestrationCommon::SquareMatrix; using SingleLayerOptics::CBSDFDefinition; using SingleLayerOptics::BSDFDirection; -using SingleLayerOptics::CBSDFDirections; +using SingleLayerOptics::BSDFDirections; // Example that tests interreflectance between two adjacent layers. This procedure will be used to // calculate other multilayer properties @@ -31,7 +31,7 @@ class TestInterReflectanceBSDF : public testing::Test aDefinitions.emplace_back(75, 1); aDefinitions.emplace_back(86.25, 1); - const auto aDirections{CBSDFDirections(aDefinitions, BSDFDirection::Incoming)}; + const auto aDirections{BSDFDirections(aDefinitions, BSDFDirection::Incoming)}; const auto aLambdas{aDirections.lambdaMatrix()}; SquareMatrix Rb{{1.438618083, 0, 0, 0, 0, 0, 0}, diff --git a/src/SingleLayerOptics/src/BSDFDirections.cpp b/src/SingleLayerOptics/src/BSDFDirections.cpp index 80ad4390..d229f32b 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.cpp +++ b/src/SingleLayerOptics/src/BSDFDirections.cpp @@ -32,19 +32,19 @@ namespace SingleLayerOptics } ///////////////////////////////////////////////////////////////// - /// CBSDFDirections + /// BSDFDirections ///////////////////////////////////////////////////////////////// - CBSDFDirections::CBSDFDirections(const std::vector & t_Definitions, + BSDFDirections::BSDFDirections(const std::vector & t_Definitions, const BSDFDirection t_Side) { - std::vector thetaAngles; - std::vector numPhiAngles; - for(auto it = t_Definitions.begin(); it < t_Definitions.end(); ++it) - { - thetaAngles.push_back((*it).theta()); - numPhiAngles.push_back((*it).numOfPhis()); - } + std::vector thetaAngles(t_Definitions.size()); + std::transform(std::begin(t_Definitions), std::end(t_Definitions), std::begin(thetaAngles), + [](const CBSDFDefinition & val) -> double { return val.theta();}); + + std::vector numPhiAngles(t_Definitions.size()); + std::transform(std::begin(t_Definitions), std::end(t_Definitions), std::begin(numPhiAngles), + [](const CBSDFDefinition & val) -> size_t { return val.numOfPhis();}); CThetaLimits ThetaLimits(thetaAngles); const auto thetaLimits{ThetaLimits.getThetaLimits()}; @@ -71,7 +71,6 @@ namespace SingleLayerOptics upperPhi += 180; } AngleLimits currentPhiLimits(lowerPhi, upperPhi); - CBSDFPatch currentPatch(currentThetaLimits, currentPhiLimits); m_Patches.emplace_back(currentThetaLimits, currentPhiLimits); lowerPhi = upperPhi; } @@ -89,37 +88,37 @@ namespace SingleLayerOptics } } - size_t CBSDFDirections::size() const + size_t BSDFDirections::size() const { return m_Patches.size(); } - const CBSDFPatch & CBSDFDirections::operator[](size_t Index) const + const CBSDFPatch & BSDFDirections::operator[](size_t Index) const { return m_Patches[Index]; } - std::vector::iterator CBSDFDirections::begin() + std::vector::iterator BSDFDirections::begin() { return m_Patches.begin(); } - std::vector::iterator CBSDFDirections::end() + std::vector::iterator BSDFDirections::end() { return m_Patches.end(); } - std::vector CBSDFDirections::lambdaVector() const + std::vector BSDFDirections::lambdaVector() const { return m_LambdaVector; } - const SquareMatrix & CBSDFDirections::lambdaMatrix() const + const SquareMatrix & BSDFDirections::lambdaMatrix() const { return m_LambdaMatrix; } - size_t CBSDFDirections::getNearestBeamIndex(const double t_Theta, const double t_Phi) const + size_t BSDFDirections::getNearestBeamIndex(const double t_Theta, const double t_Phi) const { auto it = std::find_if(m_Patches.begin(), m_Patches.end(), [&](const CBSDFPatch & a) { return a.isInPatch(t_Theta, t_Phi); @@ -135,7 +134,7 @@ namespace SingleLayerOptics } AngleLimits - CBSDFDirections::createAngleLimits(double lowerAngle, double upperAngle, size_t patchIndex) + BSDFDirections::createAngleLimits(double lowerAngle, double upperAngle, size_t patchIndex) { return patchIndex == 1 ? AngleLimits(upperAngle) : AngleLimits(lowerAngle, upperAngle); } @@ -174,18 +173,18 @@ namespace SingleLayerOptics throw std::runtime_error("Incorrect definition of the basis."); } m_Directions.insert(std::make_pair(BSDFDirection::Incoming, - CBSDFDirections(aDefinitions, BSDFDirection::Incoming))); + BSDFDirections(aDefinitions, BSDFDirection::Incoming))); m_Directions.insert(std::make_pair(BSDFDirection::Outgoing, - CBSDFDirections(aDefinitions, BSDFDirection::Outgoing))); + BSDFDirections(aDefinitions, BSDFDirection::Outgoing))); } CBSDFHemisphere::CBSDFHemisphere(const std::vector & t_Definitions) : m_Directions( - {{BSDFDirection::Incoming, CBSDFDirections(t_Definitions, BSDFDirection::Incoming)}, - {BSDFDirection::Outgoing, CBSDFDirections(t_Definitions, BSDFDirection::Outgoing)}}) + {{BSDFDirection::Incoming, BSDFDirections(t_Definitions, BSDFDirection::Incoming)}, + {BSDFDirection::Outgoing, BSDFDirections(t_Definitions, BSDFDirection::Outgoing)}}) {} - const CBSDFDirections & CBSDFHemisphere::getDirections(const BSDFDirection tDirection) const + const BSDFDirections & CBSDFHemisphere::getDirections(const BSDFDirection tDirection) const { return m_Directions.at(tDirection); } diff --git a/src/SingleLayerOptics/src/BSDFDirections.hpp b/src/SingleLayerOptics/src/BSDFDirections.hpp index 053757c4..9422326f 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.hpp +++ b/src/SingleLayerOptics/src/BSDFDirections.hpp @@ -29,11 +29,11 @@ namespace SingleLayerOptics Outgoing }; - class CBSDFDirections + class BSDFDirections { public: - CBSDFDirections() = default; - CBSDFDirections(const std::vector & t_Definitions, BSDFDirection t_Side); + BSDFDirections() = default; + BSDFDirections(const std::vector & t_Definitions, BSDFDirection t_Side); [[nodiscard]] size_t size() const; const CBSDFPatch & operator[](size_t Index) const; std::vector::iterator begin(); @@ -68,7 +68,7 @@ namespace SingleLayerOptics static CBSDFHemisphere create(BSDFBasis t_Basis); static CBSDFHemisphere create(const std::vector & t_Definitions); - [[nodiscard]] const CBSDFDirections & getDirections(BSDFDirection t_Side) const; + [[nodiscard]] const BSDFDirections & getDirections(BSDFDirection t_Side) const; private: // Construction for pre-defined basis @@ -76,7 +76,7 @@ namespace SingleLayerOptics // Construction for custom basis explicit CBSDFHemisphere(const std::vector & t_Definitions); - std::map m_Directions; + std::map m_Directions; }; } // namespace SingleLayerOptics \ No newline at end of file diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.cpp b/src/SingleLayerOptics/src/BSDFIntegrator.cpp index b157e996..4d967271 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.cpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.cpp @@ -7,7 +7,7 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { - BSDFIntegrator::BSDFIntegrator(const CBSDFDirections & t_Directions) : + BSDFIntegrator::BSDFIntegrator(const BSDFDirections & t_Directions) : m_Directions(t_Directions), m_DimMatrices(m_Directions.size()), m_HemisphericalCalculated(false), diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.hpp b/src/SingleLayerOptics/src/BSDFIntegrator.hpp index b3101505..840cdcc0 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.hpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.hpp @@ -24,7 +24,7 @@ namespace SingleLayerOptics public: BSDFIntegrator() = default; BSDFIntegrator(const BSDFIntegrator & t_Integrator) = default; - BSDFIntegrator(const CBSDFDirections & t_Directions); + BSDFIntegrator(const BSDFDirections & t_Directions); // Result matrices FenestrationCommon::SquareMatrix & getMatrix(FenestrationCommon::Side t_Side, @@ -59,7 +59,7 @@ namespace SingleLayerOptics [[nodiscard]] double Abs(FenestrationCommon::Side t_Side, double t_Theta, double t_Phi); [[nodiscard]] double Abs(FenestrationCommon::Side t_Side, size_t Index); - // std::shared_ptr< const CBSDFDirections > getDirections() const; + // std::shared_ptr< const BSDFDirections > getDirections() const; [[nodiscard]] double DiffDiff(FenestrationCommon::Side t_Side, FenestrationCommon::PropertySimple t_Property); @@ -73,7 +73,7 @@ namespace SingleLayerOptics [[nodiscard]] size_t getNearestBeamIndex(double t_Theta, double t_Phi) const; protected: - CBSDFDirections m_Directions; + BSDFDirections m_Directions; size_t m_DimMatrices; private: diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index e70231d8..45fba579 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -30,7 +30,7 @@ namespace SingleLayerOptics m_CalculatedWV = false; } - const CBSDFDirections & CBSDFLayer::getDirections(const BSDFDirection t_Side) const + const BSDFDirections & CBSDFLayer::getDirections(const BSDFDirection t_Side) const { return m_BSDFHemisphere.getDirections(t_Side); } @@ -74,7 +74,7 @@ namespace SingleLayerOptics { for(Side t_Side : EnumSide()) { - CBSDFDirections aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); + BSDFDirections aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); size_t size = aDirections.size(); SquareMatrix tau{size}; SquareMatrix rho{size}; diff --git a/src/SingleLayerOptics/src/BSDFLayer.hpp b/src/SingleLayerOptics/src/BSDFLayer.hpp index bf2c05f1..6fcffc64 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.hpp +++ b/src/SingleLayerOptics/src/BSDFLayer.hpp @@ -24,7 +24,7 @@ namespace SingleLayerOptics enum class BSDFDirection; class CBaseCell; class CBeamDirection; - class CBSDFDirections; + class BSDFDirections; // Base class for handling BSDF Layer class CBSDFLayer @@ -38,7 +38,7 @@ namespace SingleLayerOptics // BSDF results for the enire spectrum range of the material in the cell BSDFIntegrator getResults(); - const CBSDFDirections & getDirections(BSDFDirection t_Side) const; + const BSDFDirections & getDirections(BSDFDirection t_Side) const; // BSDF results for each wavelenght given in specular cell std::vector getWavelengthResults(); diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp index ccc9da73..d5bcda09 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp @@ -62,7 +62,7 @@ namespace SingleLayerOptics { std::shared_ptr aCell = cellAsDirectionalDiffuse(); - const CBSDFDirections oDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Outgoing); + const BSDFDirections oDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Outgoing); size_t size = oDirections.size(); diff --git a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp index 943aefd4..118a1389 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp @@ -38,7 +38,7 @@ namespace SingleLayerOptics double aTau = aCell->T_dir_dif(aSide, t_Direction); double Ref = aCell->R_dir_dif(aSide, t_Direction); - const CBSDFDirections aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); + const BSDFDirections aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); size_t size = aDirections.size(); for(size_t j = 0; j < size; ++j) @@ -59,7 +59,7 @@ namespace SingleLayerOptics std::vector aTau = aCell->T_dir_dif_band(aSide, t_Direction); std::vector Ref = aCell->R_dir_dif_band(aSide, t_Direction); - const CBSDFDirections aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); + const BSDFDirections aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); size_t size = aDirections.size(); for(size_t i = 0; i < size; ++i) diff --git a/src/SingleLayerOptics/tst/units/BSDFDirectionsClosestIndex.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFDirectionsClosestIndex.unit.cpp index e70e8547..38aceaf8 100644 --- a/src/SingleLayerOptics/tst/units/BSDFDirectionsClosestIndex.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFDirectionsClosestIndex.unit.cpp @@ -14,7 +14,7 @@ class TestBSDFDirectionsClosestIndex : public testing::Test CBSDFHemisphere m_BSDFHemisphere{CBSDFHemisphere::create(BSDFBasis::Quarter)}; public: - const CBSDFDirections & GetDirections(const BSDFDirection t_Side) const + const BSDFDirections & GetDirections(const BSDFDirection t_Side) const { return m_BSDFHemisphere.getDirections(t_Side); }; diff --git a/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp index bb4c97c6..35d5d9a5 100644 --- a/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp @@ -15,7 +15,7 @@ class TestBSDFQuarterBasis : public testing::Test public: - const CBSDFDirections & GetDirections(const BSDFDirection t_Side) const + const BSDFDirections & GetDirections(const BSDFDirection t_Side) const { return m_BSDFHemisphere.getDirections(t_Side); }; From 75f2cc936fe7fc7d114f2b4524f291f4b8d07fd7 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 09:13:30 -0700 Subject: [PATCH 14/81] Extraction of phi angle check --- src/SingleLayerOptics/src/BSDFDirections.cpp | 19 +++++++++---------- src/SingleLayerOptics/src/BSDFDirections.hpp | 3 +++ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/SingleLayerOptics/src/BSDFDirections.cpp b/src/SingleLayerOptics/src/BSDFDirections.cpp index d229f32b..5c31ca84 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.cpp +++ b/src/SingleLayerOptics/src/BSDFDirections.cpp @@ -58,18 +58,10 @@ namespace SingleLayerOptics const auto nPhis = numPhiAngles[thetaIndex - 1]; CPhiLimits phiAngles(nPhis); auto phiLimits = phiAngles.getPhiLimits(); - double lowerPhi = phiLimits[0]; - if(t_Side == BSDFDirection::Outgoing && nPhis != 1) - { - lowerPhi += 180; - } + auto lowerPhi {correctPhiForOutgoingDireciton(t_Side, nPhis, phiLimits[0])}; for(size_t j = 1; j < phiLimits.size(); ++j) { - double upperPhi = phiLimits[j]; - if(t_Side == BSDFDirection::Outgoing && nPhis != 1) - { - upperPhi += 180; - } + const auto upperPhi = correctPhiForOutgoingDireciton(t_Side, nPhis, phiLimits[j]); AngleLimits currentPhiLimits(lowerPhi, upperPhi); m_Patches.emplace_back(currentThetaLimits, currentPhiLimits); lowerPhi = upperPhi; @@ -88,6 +80,13 @@ namespace SingleLayerOptics } } + double BSDFDirections::correctPhiForOutgoingDireciton(const BSDFDirection & t_Side, + const size_t nPhis, + double currentPhi) + { + return (t_Side == BSDFDirection::Outgoing && nPhis != 1) ? currentPhi + 180 : currentPhi; + } + size_t BSDFDirections::size() const { return m_Patches.size(); diff --git a/src/SingleLayerOptics/src/BSDFDirections.hpp b/src/SingleLayerOptics/src/BSDFDirections.hpp index 9422326f..0665cc85 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.hpp +++ b/src/SingleLayerOptics/src/BSDFDirections.hpp @@ -52,6 +52,9 @@ namespace SingleLayerOptics //! Function that will create angle limits based on patch index. AngleLimits createAngleLimits(double lowerAngle, double upperAngle, size_t patchIndex); + static double correctPhiForOutgoingDireciton(const BSDFDirection & t_Side, + const size_t nPhis, + double currentPhi) ; }; enum class BSDFBasis From 9702805b0ceb163b351e192d6ce24d3325551ca8 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 09:55:59 -0700 Subject: [PATCH 15/81] BSDFDirections constructor simplified --- src/SingleLayerOptics/src/BSDFDirections.cpp | 75 ++++++++++++++------ src/SingleLayerOptics/src/BSDFDirections.hpp | 10 +++ 2 files changed, 65 insertions(+), 20 deletions(-) diff --git a/src/SingleLayerOptics/src/BSDFDirections.cpp b/src/SingleLayerOptics/src/BSDFDirections.cpp index 5c31ca84..b86dc72a 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.cpp +++ b/src/SingleLayerOptics/src/BSDFDirections.cpp @@ -36,16 +36,41 @@ namespace SingleLayerOptics ///////////////////////////////////////////////////////////////// BSDFDirections::BSDFDirections(const std::vector & t_Definitions, - const BSDFDirection t_Side) - { - std::vector thetaAngles(t_Definitions.size()); - std::transform(std::begin(t_Definitions), std::end(t_Definitions), std::begin(thetaAngles), - [](const CBSDFDefinition & val) -> double { return val.theta();}); + const BSDFDirection t_Side) : + m_Patches(createBSDFPatches( + t_Side, getThetaAngles(t_Definitions), getNumberOfPhiAngles(t_Definitions))), + m_LambdaVector(getLambdaVector(m_Patches)), + m_LambdaMatrix(setLambdaMatrix(m_LambdaVector)) + {} + std::vector + BSDFDirections::getNumberOfPhiAngles(const std::vector & t_Definitions) + { std::vector numPhiAngles(t_Definitions.size()); - std::transform(std::begin(t_Definitions), std::end(t_Definitions), std::begin(numPhiAngles), - [](const CBSDFDefinition & val) -> size_t { return val.numOfPhis();}); + std::transform(std::begin(t_Definitions), + std::end(t_Definitions), + std::begin(numPhiAngles), + [](const CBSDFDefinition & val) -> size_t { return val.numOfPhis(); }); + return numPhiAngles; + } + + std::vector + BSDFDirections::getThetaAngles(const std::vector & t_Definitions) + { + std::vector thetaAngles(t_Definitions.size()); + std::transform(std::begin(t_Definitions), + std::end(t_Definitions), + std::begin(thetaAngles), + [](const CBSDFDefinition & val) -> double { return val.theta(); }); + return thetaAngles; + } + std::vector + BSDFDirections::createBSDFPatches(const BSDFDirection & t_Side, + const std::vector & thetaAngles, + const std::vector & numPhiAngles) + { + std::vector patches; CThetaLimits ThetaLimits(thetaAngles); const auto thetaLimits{ThetaLimits.getThetaLimits()}; @@ -58,31 +83,23 @@ namespace SingleLayerOptics const auto nPhis = numPhiAngles[thetaIndex - 1]; CPhiLimits phiAngles(nPhis); auto phiLimits = phiAngles.getPhiLimits(); - auto lowerPhi {correctPhiForOutgoingDireciton(t_Side, nPhis, phiLimits[0])}; + auto lowerPhi{correctPhiForOutgoingDireciton(t_Side, nPhis, phiLimits[0])}; for(size_t j = 1; j < phiLimits.size(); ++j) { const auto upperPhi = correctPhiForOutgoingDireciton(t_Side, nPhis, phiLimits[j]); AngleLimits currentPhiLimits(lowerPhi, upperPhi); - m_Patches.emplace_back(currentThetaLimits, currentPhiLimits); + patches.emplace_back(currentThetaLimits, currentPhiLimits); lowerPhi = upperPhi; } lowerTheta = upperTheta; } - // build lambda std::vector and matrix - size_t size = m_Patches.size(); - // m_LambdaVector = std::make_shared>(); - m_LambdaMatrix = SquareMatrix(size); - for(size_t i = 0; i < size; ++i) - { - m_LambdaVector.push_back(m_Patches[i].lambda()); - m_LambdaMatrix(i, i) = m_Patches[i].lambda(); - } + return patches; } double BSDFDirections::correctPhiForOutgoingDireciton(const BSDFDirection & t_Side, - const size_t nPhis, - double currentPhi) + const size_t nPhis, + double currentPhi) { return (t_Side == BSDFDirection::Outgoing && nPhis != 1) ? currentPhi + 180 : currentPhi; } @@ -138,6 +155,24 @@ namespace SingleLayerOptics return patchIndex == 1 ? AngleLimits(upperAngle) : AngleLimits(lowerAngle, upperAngle); } + std::vector BSDFDirections::getLambdaVector(std::vector patches) + { + std::vector lambda(patches.size()); + std::transform(std::begin(patches), + std::end(patches), + std::begin(lambda), + [](const CBSDFPatch & val) -> double { return val.lambda(); }); + return lambda; + } + + FenestrationCommon::SquareMatrix + BSDFDirections::setLambdaMatrix(const std::vector & lambdas) + { + FenestrationCommon::SquareMatrix lambdaMatrix(lambdas.size()); + lambdaMatrix.setDiagonal(lambdas); + return lambdaMatrix; + } + ///////////////////////////////////////////////////////////////// /// CBSDFHemisphere ///////////////////////////////////////////////////////////////// diff --git a/src/SingleLayerOptics/src/BSDFDirections.hpp b/src/SingleLayerOptics/src/BSDFDirections.hpp index 0665cc85..0ca3c52a 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.hpp +++ b/src/SingleLayerOptics/src/BSDFDirections.hpp @@ -55,6 +55,16 @@ namespace SingleLayerOptics static double correctPhiForOutgoingDireciton(const BSDFDirection & t_Side, const size_t nPhis, double currentPhi) ; + std::vector createBSDFPatches(const BSDFDirection & t_Side, + const std::vector & thetaAngles, + const std::vector & numPhiAngles); + static std::vector + getThetaAngles(const std::vector & t_Definitions) ; + static std::vector + getNumberOfPhiAngles(const std::vector & t_Definitions) ; + + static std::vector getLambdaVector(std::vector patches); + static FenestrationCommon::SquareMatrix setLambdaMatrix(const std::vector & lambdas); }; enum class BSDFBasis From 3b9fc0aeb523f71e52cdb2ad4bcfcc5092b90ea8 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 10:03:28 -0700 Subject: [PATCH 16/81] SetZero function removed from SetDiagonal function in CSquareMatrix --- src/Common/src/SquareMatrix.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Common/src/SquareMatrix.cpp b/src/Common/src/SquareMatrix.cpp index f66929fb..1159d861 100755 --- a/src/Common/src/SquareMatrix.cpp +++ b/src/Common/src/SquareMatrix.cpp @@ -61,7 +61,6 @@ namespace FenestrationCommon { throw std::runtime_error("Matrix and vector must be same size."); } - setZeros(); for(auto i = 0u; i < m_size; ++i) { From b08345fc1adc1a872d5a156ec0932de2930a557b Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 10:19:34 -0700 Subject: [PATCH 17/81] Unit test for squarematrix updated --- src/Common/tst/units/MatrixGeneral.unit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Common/tst/units/MatrixGeneral.unit.cpp b/src/Common/tst/units/MatrixGeneral.unit.cpp index b55f8d98..209c141f 100644 --- a/src/Common/tst/units/MatrixGeneral.unit.cpp +++ b/src/Common/tst/units/MatrixGeneral.unit.cpp @@ -24,8 +24,8 @@ TEST_F(TestMatrixGeneral, TestSetDiagonal) a.setDiagonal(b); EXPECT_NEAR(7, a(0, 0), 1e-6); - EXPECT_NEAR(0, a(0, 1), 1e-6); - EXPECT_NEAR(0, a(1, 0), 1e-6); + EXPECT_NEAR(2, a(0, 1), 1e-6); + EXPECT_NEAR(3, a(1, 0), 1e-6); EXPECT_NEAR(8, a(1, 1), 1e-6); } From 52a3e59b0fd403de36417c9da04fd6919465b549 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 10:58:50 -0700 Subject: [PATCH 18/81] Default BSDF definitions are now private map of BSDFHemisphere class --- src/SingleLayerOptics/src/BSDFDirections.cpp | 44 ++++++------------- src/SingleLayerOptics/src/BSDFDirections.hpp | 15 +++++++ .../units/SingleLayerOpticsUtilities.unit.cpp | 26 +++++++++++ 3 files changed, 54 insertions(+), 31 deletions(-) create mode 100644 src/SingleLayerOptics/tst/units/SingleLayerOpticsUtilities.unit.cpp diff --git a/src/SingleLayerOptics/src/BSDFDirections.cpp b/src/SingleLayerOptics/src/BSDFDirections.cpp index b86dc72a..bbe90790 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.cpp +++ b/src/SingleLayerOptics/src/BSDFDirections.cpp @@ -177,39 +177,21 @@ namespace SingleLayerOptics /// CBSDFHemisphere ///////////////////////////////////////////////////////////////// + const std::map> CBSDFHemisphere::bsdfDefinition = { + {BSDFBasis::Small, {{0, 1}, {13, 1}, {26, 1}, {39, 1}, {52, 1}, {65, 1}, {80.75, 1}}}, + {BSDFBasis::Quarter, {{0, 1}, {18, 8}, {36, 12}, {54, 12}, {76.5, 8}}}, + {BSDFBasis::Half, {{0, 1}, {13, 8}, {26, 12}, {39, 16}, {52, 20}, {65, 12}, {80.75, 8}}}, + {BSDFBasis::Full, + {{0, 1}, {10, 8}, {20, 16}, {30, 20}, {40, 24}, {50, 24}, {60, 24}, {70, 16}, {82.5, 12}}}}; + CBSDFHemisphere::CBSDFHemisphere(const BSDFBasis t_Basis) { - std::vector aDefinitions; - switch(t_Basis) - { - case BSDFBasis::Small: - aDefinitions = {{0, 1}, {13, 1}, {26, 1}, {39, 1}, {52, 1}, {65, 1}, {80.75, 1}}; - break; - case BSDFBasis::Quarter: - aDefinitions = {{0, 1}, {18, 8}, {36, 12}, {54, 12}, {76.5, 8}}; - break; - case BSDFBasis::Half: - aDefinitions = { - {0, 1}, {13, 8}, {26, 12}, {39, 16}, {52, 20}, {65, 12}, {80.75, 8}}; - break; - case BSDFBasis::Full: - aDefinitions = {{0, 1}, - {10, 8}, - {20, 16}, - {30, 20}, - {40, 24}, - {50, 24}, - {60, 24}, - {70, 16}, - {82.5, 12}}; - break; - default: - throw std::runtime_error("Incorrect definition of the basis."); - } - m_Directions.insert(std::make_pair(BSDFDirection::Incoming, - BSDFDirections(aDefinitions, BSDFDirection::Incoming))); - m_Directions.insert(std::make_pair(BSDFDirection::Outgoing, - BSDFDirections(aDefinitions, BSDFDirection::Outgoing))); + m_Directions.insert( + std::make_pair(BSDFDirection::Incoming, + BSDFDirections(bsdfDefinition.at(t_Basis), BSDFDirection::Incoming))); + m_Directions.insert( + std::make_pair(BSDFDirection::Outgoing, + BSDFDirections(bsdfDefinition.at(t_Basis), BSDFDirection::Outgoing))); } CBSDFHemisphere::CBSDFHemisphere(const std::vector & t_Definitions) : diff --git a/src/SingleLayerOptics/src/BSDFDirections.hpp b/src/SingleLayerOptics/src/BSDFDirections.hpp index 0ca3c52a..76c75ff0 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.hpp +++ b/src/SingleLayerOptics/src/BSDFDirections.hpp @@ -29,6 +29,19 @@ namespace SingleLayerOptics Outgoing }; + class EnumBSDFDirection : public FenestrationCommon::Enum + {}; + + inline EnumBSDFDirection::Iterator begin(EnumBSDFDirection) + { + return EnumBSDFDirection::Iterator(static_cast(BSDFDirection::Incoming)); + } + + inline EnumBSDFDirection::Iterator end(EnumBSDFDirection) + { + return EnumBSDFDirection::Iterator(static_cast(BSDFDirection::Outgoing) + 1); + } + class BSDFDirections { public: @@ -84,6 +97,8 @@ namespace SingleLayerOptics [[nodiscard]] const BSDFDirections & getDirections(BSDFDirection t_Side) const; private: + static const std::map> bsdfDefinition; + // Construction for pre-defined basis explicit CBSDFHemisphere(BSDFBasis t_Basis); // Construction for custom basis diff --git a/src/SingleLayerOptics/tst/units/SingleLayerOpticsUtilities.unit.cpp b/src/SingleLayerOptics/tst/units/SingleLayerOpticsUtilities.unit.cpp new file mode 100644 index 00000000..14978d3f --- /dev/null +++ b/src/SingleLayerOptics/tst/units/SingleLayerOpticsUtilities.unit.cpp @@ -0,0 +1,26 @@ +#include +#include + +#include + +class TestSingleLayerOpticsUtilities : public testing::Test +{}; + +TEST_F(TestSingleLayerOpticsUtilities, BSDFDirectionEnumeration) +{ + using SingleLayerOptics::BSDFDirection; + std::vector directions; + for(const auto & direction : SingleLayerOptics::EnumBSDFDirection()) + { + directions.emplace_back(direction); + } + + const std::vector correctDirections{BSDFDirection::Incoming, + BSDFDirection::Outgoing}; + + EXPECT_EQ(correctDirections.size(), directions.size()); + for(size_t i = 0; i < correctDirections.size(); ++i) + { + EXPECT_EQ(correctDirections[i], directions[i]); + } +} From 99cc47801e8f586850e97b9bd6610ca466316a28 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 11:21:50 -0700 Subject: [PATCH 19/81] BSDFDirections refactored --- src/SingleLayerOptics/src/BSDFDirections.cpp | 23 ++++++++++---------- src/SingleLayerOptics/src/BSDFDirections.hpp | 1 + 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/SingleLayerOptics/src/BSDFDirections.cpp b/src/SingleLayerOptics/src/BSDFDirections.cpp index bbe90790..5f9be15e 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.cpp +++ b/src/SingleLayerOptics/src/BSDFDirections.cpp @@ -184,20 +184,12 @@ namespace SingleLayerOptics {BSDFBasis::Full, {{0, 1}, {10, 8}, {20, 16}, {30, 20}, {40, 24}, {50, 24}, {60, 24}, {70, 16}, {82.5, 12}}}}; - CBSDFHemisphere::CBSDFHemisphere(const BSDFBasis t_Basis) - { - m_Directions.insert( - std::make_pair(BSDFDirection::Incoming, - BSDFDirections(bsdfDefinition.at(t_Basis), BSDFDirection::Incoming))); - m_Directions.insert( - std::make_pair(BSDFDirection::Outgoing, - BSDFDirections(bsdfDefinition.at(t_Basis), BSDFDirection::Outgoing))); - } + CBSDFHemisphere::CBSDFHemisphere(const BSDFBasis t_Basis) : + m_Directions(generateBSDFDirections(bsdfDefinition.at(t_Basis))) + {} CBSDFHemisphere::CBSDFHemisphere(const std::vector & t_Definitions) : - m_Directions( - {{BSDFDirection::Incoming, BSDFDirections(t_Definitions, BSDFDirection::Incoming)}, - {BSDFDirection::Outgoing, BSDFDirections(t_Definitions, BSDFDirection::Outgoing)}}) + m_Directions(generateBSDFDirections(t_Definitions)) {} const BSDFDirections & CBSDFHemisphere::getDirections(const BSDFDirection tDirection) const @@ -215,4 +207,11 @@ namespace SingleLayerOptics return CBSDFHemisphere(t_Definitions); } + std::map + CBSDFHemisphere::generateBSDFDirections(const std::vector & t_Definitions) + { + return {{BSDFDirection::Incoming, BSDFDirections(t_Definitions, BSDFDirection::Incoming)}, + {BSDFDirection::Outgoing, BSDFDirections(t_Definitions, BSDFDirection::Outgoing)}}; + } + } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/BSDFDirections.hpp b/src/SingleLayerOptics/src/BSDFDirections.hpp index 76c75ff0..25586bb4 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.hpp +++ b/src/SingleLayerOptics/src/BSDFDirections.hpp @@ -105,6 +105,7 @@ namespace SingleLayerOptics explicit CBSDFHemisphere(const std::vector & t_Definitions); std::map m_Directions; + static std::map generateBSDFDirections(const std::vector & t_Definitions); }; } // namespace SingleLayerOptics \ No newline at end of file From 266195612524bbbac5ef50346dd0b4edb9ea2ef9 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 11:35:05 -0700 Subject: [PATCH 20/81] Removing C in front of CBSDFDirections and CBSDFHemisphere --- .../units/DoubleLayerBSDFPerforated.unit.cpp | 4 +- .../units/DoubleLayerBSDFSpecular.unit.cpp | 18 ++++----- .../EquivalentBSDFDoubleSpecular.unit.cpp | 2 +- ...lentBSDFTriplePerforatedInBetween.unit.cpp | 20 +++++----- .../tst/units/InterReflectanceBSDF.unit.cpp | 4 +- .../tst/units/MultiPaneBSDF_102.unit.cpp | 2 +- .../tst/units/MultiPaneBSDF_102_103.unit.cpp | 2 +- .../MultiPaneBSDF_102_103_SmallBasis.unit.cpp | 2 +- .../MultiPaneBSDF_102_103_Visible.unit.cpp | 2 +- .../MultiPaneBSDF_102_BSDFMaterial.unit.cpp | 2 +- ...aneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 4 +- ...iPaneBSDF_102_PerfectDiffuseSolar.unit.cpp | 2 +- ...aneBSDF_102_PerfectDiffuseVisible.unit.cpp | 2 +- ...tiPaneBSDF_102_PerforatedCircular.unit.cpp | 2 +- ..._102_PerforatedCircular_NFRC18000.unit.cpp | 2 +- ...aneBSDF_102_PerforatedRectangular.unit.cpp | 2 +- ...iPaneBSDF_102_VenetianDirectional.unit.cpp | 2 +- ...netianDirectional_n_Band_Material.unit.cpp | 2 +- ...MultiPaneBSDF_102_VenetianUniform.unit.cpp | 2 +- ...2_VenetianUniform_Multiwavelength.unit.cpp | 2 +- .../units/MultiPaneBSDF_102_Woven.unit.cpp | 2 +- ...PaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 2 +- .../units/MultiPaneBSDF_20243_102.unit.cpp | 2 +- ...ltiPaneBSDF_BSDFMaterial_Photopic.unit.cpp | 2 +- .../tst/units/MultiPaneBSDF_Woven_IR.unit.cpp | 2 +- ...tiPanePhotovoltaicBSDF_SmallBasis.unit.cpp | 2 +- ...ovoltaicBSDF_SmallBasis_Condensed.unit.cpp | 2 +- src/SingleLayerOptics/src/BSDFDirections.cpp | 38 +++++++++---------- src/SingleLayerOptics/src/BSDFDirections.hpp | 24 ++++++------ src/SingleLayerOptics/src/BSDFLayer.cpp | 2 +- src/SingleLayerOptics/src/BSDFLayer.hpp | 4 +- src/SingleLayerOptics/src/BSDFLayerMaker.cpp | 20 +++++----- src/SingleLayerOptics/src/BSDFLayerMaker.hpp | 22 +++++------ .../src/DirectionalDiffuseBSDFLayer.cpp | 6 +-- .../src/DirectionalDiffuseBSDFLayer.hpp | 6 +-- src/SingleLayerOptics/src/Material.cpp | 8 ++-- src/SingleLayerOptics/src/Material.hpp | 10 ++--- .../src/MaterialDescription.cpp | 10 ++--- .../src/MaterialDescription.hpp | 12 +++--- .../src/PhotovoltaicSpecularBSDFLayer.cpp | 2 +- .../src/PhotovoltaicSpecularBSDFLayer.hpp | 2 +- src/SingleLayerOptics/src/ScatteringLayer.cpp | 14 +++---- .../src/SpecularBSDFLayer.cpp | 2 +- .../src/SpecularBSDFLayer.hpp | 2 +- .../src/UniformDiffuseBSDFLayer.cpp | 2 +- .../src/UniformDiffuseBSDFLayer.hpp | 2 +- .../units/BSDFDirectionsClosestIndex.unit.cpp | 2 +- .../tst/units/BSDFMaterialDualBand.unit.cpp | 2 +- ...SDFMaterialDualBandCondensedRange.unit.cpp | 4 +- .../tst/units/BSDFMaterialSingleBand.unit.cpp | 2 +- .../tst/units/BSDFQuarterBasis.unit.cpp | 2 +- .../units/CircularPerforatedShade1.unit.cpp | 2 +- .../units/CircularPerforatedShade2.unit.cpp | 2 +- ...larPerforatedShadeMultiWavelength.unit.cpp | 2 +- .../CircularPerforatedShadeNFRC18000.unit.cpp | 2 +- .../tst/units/PerfectDiffuseShade1.unit.cpp | 2 +- .../RectangularPerforatedShade1.unit.cpp | 2 +- .../RectangularPerforatedShade2.unit.cpp | 2 +- .../units/SinglePaneBSDF_VenetianIR.unit.cpp | 2 +- .../units/SpecularAngularLayer_102.unit.cpp | 2 +- ...cularBSDFLayer_SingleBandMaterial.unit.cpp | 2 +- .../SpecularLayerMultiWavelength_102.unit.cpp | 2 +- .../tst/units/SpecularLayer_102.unit.cpp | 2 +- .../tst/units/SpecularLayer_103.unit.cpp | 2 +- .../tst/units/SpecularLayer_1042.unit.cpp | 2 +- ...anDirectionalShadeCurvedMinus45_0.unit.cpp | 2 +- .../VenetianDirectionalShadeFlat0_1.unit.cpp | 2 +- .../VenetianDirectionalShadeFlat0_2.unit.cpp | 2 +- .../VenetianDirectionalShadeFlat0_3.unit.cpp | 2 +- .../VenetianDirectionalShadeFlat45_5.unit.cpp | 2 +- ...onalShadeFlat45_5_Multiwavelength.unit.cpp | 2 +- ...netianUniformShadeCurvedMinus45_0.unit.cpp | 2 +- ...netianUniformShadeCurvedMinus55_0.unit.cpp | 2 +- ...tianUniformShadeCurvedZeroAngle_0.unit.cpp | 2 +- .../VenetianUniformShadeFlat0_1.unit.cpp | 2 +- .../VenetianUniformShadeFlat0_2.unit.cpp | 2 +- .../VenetianUniformShadeFlat45_1.unit.cpp | 2 +- ...formShadeFlat45_5_Multiwavelength.unit.cpp | 2 +- .../units/VenetianUniformShadeMatrix.unit.cpp | 2 +- .../VenetianUniformShadeVertical.unit.cpp | 2 +- .../units/WovenShadeMultiWavelength.unit.cpp | 2 +- .../units/WovenShadeUniformMaterial.unit.cpp | 2 +- 82 files changed, 178 insertions(+), 178 deletions(-) diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp index 438c61ad..550d282c 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp @@ -23,11 +23,11 @@ class TestDoubleLayerBSDFPerforated : public testing::Test virtual void SetUp() { // Create lambda matrix - std::vector aDefinitions{ + std::vector aDefinitions{ {0, 1}, {15, 1}, {30, 1}, {45, 1}, {60, 1}, {75, 1}, {86.25, 1}}; // Create BSDF out of previous definitions - const auto aBSDF = CBSDFHemisphere::create(aDefinitions); + const auto aBSDF = BSDFHemisphere::create(aDefinitions); CSeries aSolarRadiation; diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp index 52e3b54a..30239935 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp @@ -23,17 +23,17 @@ class TestDoubleLayerBSDFSpecular : public testing::Test virtual void SetUp() { // Create lambda matrix - std::vector aDefinitions; - aDefinitions.push_back(CBSDFDefinition(0, 1)); - aDefinitions.push_back(CBSDFDefinition(15, 1)); - aDefinitions.push_back(CBSDFDefinition(30, 1)); - aDefinitions.push_back(CBSDFDefinition(45, 1)); - aDefinitions.push_back(CBSDFDefinition(60, 1)); - aDefinitions.push_back(CBSDFDefinition(75, 1)); - aDefinitions.push_back(CBSDFDefinition(86.25, 1)); + std::vector aDefinitions; + aDefinitions.push_back(BSDFDefinition(0, 1)); + aDefinitions.push_back(BSDFDefinition(15, 1)); + aDefinitions.push_back(BSDFDefinition(30, 1)); + aDefinitions.push_back(BSDFDefinition(45, 1)); + aDefinitions.push_back(BSDFDefinition(60, 1)); + aDefinitions.push_back(BSDFDefinition(75, 1)); + aDefinitions.push_back(BSDFDefinition(86.25, 1)); // Create BSDF from definitions - const auto aBSDF = CBSDFHemisphere::create(aDefinitions); + const auto aBSDF = BSDFHemisphere::create(aDefinitions); CSeries aSolarRadiation; diff --git a/src/MultiLayerOptics/tst/units/EquivalentBSDFDoubleSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentBSDFDoubleSpecular.unit.cpp index 50c0a9e9..3dae0d49 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentBSDFDoubleSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentBSDFDoubleSpecular.unit.cpp @@ -21,7 +21,7 @@ class TestEquivalentBSDFDoubleSpecular : public testing::Test virtual void SetUp() { // Create lambda matrix - const auto aBSDF = CBSDFHemisphere::create( + const auto aBSDF = BSDFHemisphere::create( {{0, 1}, {15, 1}, {30, 1}, {45, 1}, {60, 1}, {75, 1}, {86.25, 1}}); // Full ASTM E891-87 Table 1 diff --git a/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp index c09e5e0f..3c195c4f 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp @@ -19,16 +19,16 @@ class TestEquivalentBSDFTriplePerforatedInBetween : public testing::Test virtual void SetUp() { // Create lambda matrix - std::vector aDefinitions; - aDefinitions.push_back(CBSDFDefinition(0, 1)); - aDefinitions.push_back(CBSDFDefinition(15, 1)); - aDefinitions.push_back(CBSDFDefinition(30, 1)); - aDefinitions.push_back(CBSDFDefinition(45, 1)); - aDefinitions.push_back(CBSDFDefinition(60, 1)); - aDefinitions.push_back(CBSDFDefinition(75, 1)); - aDefinitions.push_back(CBSDFDefinition(86.25, 1)); - - const auto aBSDF = CBSDFHemisphere::create(aDefinitions); + std::vector aDefinitions; + aDefinitions.push_back(BSDFDefinition(0, 1)); + aDefinitions.push_back(BSDFDefinition(15, 1)); + aDefinitions.push_back(BSDFDefinition(30, 1)); + aDefinitions.push_back(BSDFDefinition(45, 1)); + aDefinitions.push_back(BSDFDefinition(60, 1)); + aDefinitions.push_back(BSDFDefinition(75, 1)); + aDefinitions.push_back(BSDFDefinition(86.25, 1)); + + const auto aBSDF = BSDFHemisphere::create(aDefinitions); CSeries aSolarRadiation; diff --git a/src/MultiLayerOptics/tst/units/InterReflectanceBSDF.unit.cpp b/src/MultiLayerOptics/tst/units/InterReflectanceBSDF.unit.cpp index bfc48781..6bb5fbfe 100644 --- a/src/MultiLayerOptics/tst/units/InterReflectanceBSDF.unit.cpp +++ b/src/MultiLayerOptics/tst/units/InterReflectanceBSDF.unit.cpp @@ -7,7 +7,7 @@ using FenestrationCommon::SquareMatrix; -using SingleLayerOptics::CBSDFDefinition; +using SingleLayerOptics::BSDFDefinition; using SingleLayerOptics::BSDFDirection; using SingleLayerOptics::BSDFDirections; @@ -22,7 +22,7 @@ class TestInterReflectanceBSDF : public testing::Test virtual void SetUp() { // Create lambda matrix - std::vector aDefinitions; + std::vector aDefinitions; aDefinitions.emplace_back(0, 1); aDefinitions.emplace_back(15, 1); aDefinitions.emplace_back(30, 1); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp index 2dfb32aa..de2d2af9 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp @@ -126,7 +126,7 @@ class MultiPaneBSDF_102 : public testing::Test loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); // BSDF definition is needed as well as its material representation - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); m_Layer = CMultiPaneBSDF::create(Layer_102, loadSolarRadiationFile()); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp index ad228c2e..76f6b88c 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp @@ -192,7 +192,7 @@ class MultiPaneBSDF_102_103 : public testing::Test loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); // BSDF definition is needed as well as its material representation - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_103 = CBSDFLayerMaker::getSpecularLayer(aMaterial_103, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp index 7f99d0ea..e42ce478 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp @@ -190,7 +190,7 @@ class MultiPaneBSDF_102_103_SmallBasis : public testing::Test auto aMaterial_103 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_103 = CBSDFLayerMaker::getSpecularLayer(aMaterial_103, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp index 0ffaaea7..92007a59 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp @@ -217,7 +217,7 @@ class MultiPaneBSDF_102_103_Visible : public testing::Test loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); // BSDF definition is needed as well as its material representation - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_103 = CBSDFLayerMaker::getSpecularLayer(aMaterial_103, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp index c974c26c..b62340d6 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp @@ -169,7 +169,7 @@ class MultiPaneBSDF_102_BSDFMaterial : public testing::Test auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto tf = loadTf(); auto tb = loadTf(); auto rf = loadRf(); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index d02ac915..d04ff351 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -1332,7 +1332,7 @@ return { { using FenestrationCommon::MaterialType; using FenestrationCommon::WavelengthRange; - using SingleLayerOptics::CBSDFHemisphere; + using SingleLayerOptics::BSDFHemisphere; const auto numberOfVisibleBands{5u}; const auto numberOfIRBands{10u}; @@ -1346,7 +1346,7 @@ return { aMaterial_102->setBandWavelengths(condensedSpectrum); - const auto aBSDF = CBSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Full); auto tfSolar = TransmittanceFrontSolar(); auto tbSolar = TransmittanceBackSolar(); auto rfSolar = ReflectanceFrontSolar(); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp index bec83531..1903ae4a 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp @@ -127,7 +127,7 @@ class MultiPaneBSDF_102_PerfectDiffuseSolar : public testing::Test aMaterial_102->setBandWavelengths(commonWL); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp index 05a75943..f38a6011 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp @@ -239,7 +239,7 @@ class MultiPaneBSDF_102_PerfectDiffuse_Visible : public testing::Test auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp index 9ad4103a..d29036d9 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp @@ -125,7 +125,7 @@ class MultiPaneBSDF_102_Perforated : public testing::Test const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); // Dual band material properties diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp index cd8769e7..b7a0ed4c 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp @@ -277,7 +277,7 @@ class MultiPaneBSDF_102_PerforatedCircular_NFRC18000 : public testing::Test const auto solarRadiation{loadSolarRadiationFile()}; const auto wl{solarRadiation.getXArray()}; - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto thickness_102 = 3.048e-3; // [m] diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp index e0a45812..d0922acf 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp @@ -124,7 +124,7 @@ class MultiPaneBSDF_102_PerforatedRectangular : public testing::Test auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); // Solar material properties diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp index c19939cf..af2ad500 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp @@ -124,7 +124,7 @@ class MultiPaneBSDF_102_VenetianDirectional : public testing::Test auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp index f9b3d2e9..5495aa10 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp @@ -283,7 +283,7 @@ class MultiPaneBSDF_102_VenetianDirectional_n_Band_Material : public testing::Te aMaterial_102->setBandWavelengths(commonWavelengths); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp index 6abb9e66..5a907995 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp @@ -124,7 +124,7 @@ class MultiPaneBSDF_102_VenetianUniform : public testing::Test auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); const auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp index e65a4d83..55c5b5e7 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp @@ -191,7 +191,7 @@ class MultiPaneBSDF_102_VenetianUniformMultiWL : public testing::Test auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); // specular layer NFRC=102 auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp index 779bb567..8574c5b6 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp @@ -124,7 +124,7 @@ class MultiPaneBSDF_102_Woven : public testing::Test auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); // Setting circular perforated shade with double range material diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index 2022aa4b..81365f3e 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -283,7 +283,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test aMaterial_102->setBandWavelengths(commonWavelengths); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); // Woven material diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp index 7f9f991e..2adda2a8 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp @@ -357,7 +357,7 @@ class MultiPaneBSDF_20243_103 : public testing::Test loadSampleData_NFRC_20243(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); // BSDF definition is needed as well as its material representation - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_20243 = CBSDFLayerMaker::getSpecularLayer(aMaterial_20243, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp index 19ec677d..df3434ee 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp @@ -807,7 +807,7 @@ class MultiPaneBSDF_BSDFMaterial_Photopic : public testing::Test protected: virtual void SetUp() { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); const auto tfVisible = loadTfVisible(); const auto tbVisible = loadTbVisible(); const auto rfVisible = loadRfVisible(); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp index b0bf50db..4d83d69e 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp @@ -55,7 +55,7 @@ class MultiPaneBSDF_Woven_IR : public testing::Test protected: virtual void SetUp() { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); const auto TIR = 0.0; const auto RfIR = 0.1; diff --git a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp index b9c075dc..7c9a1e74 100644 --- a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp @@ -1807,7 +1807,7 @@ class MultiPanePhotovoltaicBSDF_SmallBasis : public testing::Test const auto aMaterial_1 = Material::nBandPhotovoltaicMaterial( pvSample, thickness, MaterialType::Monolithic, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_1 = CBSDFLayerMaker::getPhotovoltaicSpecularLayer(aMaterial_1, aBSDF, table()); m_Layer = CMultiPaneBSDF::create({Layer_1}, loadSolarRadiationFile()); diff --git a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp index e2054a74..59e8b004 100644 --- a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp @@ -1830,7 +1830,7 @@ class MultiPanePhotovoltaicBSDF_SmallBasis_Condensed : public testing::Test aMaterial_1->setBandWavelengths(condensedSpectrum()); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Small); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_1 = CBSDFLayerMaker::getPhotovoltaicSpecularLayer(aMaterial_1, aBSDF, table()); m_Layer = CMultiPaneBSDF::create({Layer_1}, loadSolarRadiationFile()); diff --git a/src/SingleLayerOptics/src/BSDFDirections.cpp b/src/SingleLayerOptics/src/BSDFDirections.cpp index 5f9be15e..02201bd7 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.cpp +++ b/src/SingleLayerOptics/src/BSDFDirections.cpp @@ -13,20 +13,20 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { ///////////////////////////////////////////////////////////////// - /// CBSDFDefinition + /// BSDFDefinition ///////////////////////////////////////////////////////////////// - CBSDFDefinition::CBSDFDefinition(const double t_Theta, const size_t t_NumOfPhis) : + BSDFDefinition::BSDFDefinition(const double t_Theta, const size_t t_NumOfPhis) : m_Theta(t_Theta), m_NumOfPhis(t_NumOfPhis) {} - double CBSDFDefinition::theta() const + double BSDFDefinition::theta() const { return m_Theta; } - size_t CBSDFDefinition::numOfPhis() const + size_t BSDFDefinition::numOfPhis() const { return m_NumOfPhis; } @@ -35,7 +35,7 @@ namespace SingleLayerOptics /// BSDFDirections ///////////////////////////////////////////////////////////////// - BSDFDirections::BSDFDirections(const std::vector & t_Definitions, + BSDFDirections::BSDFDirections(const std::vector & t_Definitions, const BSDFDirection t_Side) : m_Patches(createBSDFPatches( t_Side, getThetaAngles(t_Definitions), getNumberOfPhiAngles(t_Definitions))), @@ -44,24 +44,24 @@ namespace SingleLayerOptics {} std::vector - BSDFDirections::getNumberOfPhiAngles(const std::vector & t_Definitions) + BSDFDirections::getNumberOfPhiAngles(const std::vector & t_Definitions) { std::vector numPhiAngles(t_Definitions.size()); std::transform(std::begin(t_Definitions), std::end(t_Definitions), std::begin(numPhiAngles), - [](const CBSDFDefinition & val) -> size_t { return val.numOfPhis(); }); + [](const BSDFDefinition & val) -> size_t { return val.numOfPhis(); }); return numPhiAngles; } std::vector - BSDFDirections::getThetaAngles(const std::vector & t_Definitions) + BSDFDirections::getThetaAngles(const std::vector & t_Definitions) { std::vector thetaAngles(t_Definitions.size()); std::transform(std::begin(t_Definitions), std::end(t_Definitions), std::begin(thetaAngles), - [](const CBSDFDefinition & val) -> double { return val.theta(); }); + [](const BSDFDefinition & val) -> double { return val.theta(); }); return thetaAngles; } @@ -174,41 +174,41 @@ namespace SingleLayerOptics } ///////////////////////////////////////////////////////////////// - /// CBSDFHemisphere + /// BSDFHemisphere ///////////////////////////////////////////////////////////////// - const std::map> CBSDFHemisphere::bsdfDefinition = { + const std::map> BSDFHemisphere::bsdfDefinition = { {BSDFBasis::Small, {{0, 1}, {13, 1}, {26, 1}, {39, 1}, {52, 1}, {65, 1}, {80.75, 1}}}, {BSDFBasis::Quarter, {{0, 1}, {18, 8}, {36, 12}, {54, 12}, {76.5, 8}}}, {BSDFBasis::Half, {{0, 1}, {13, 8}, {26, 12}, {39, 16}, {52, 20}, {65, 12}, {80.75, 8}}}, {BSDFBasis::Full, {{0, 1}, {10, 8}, {20, 16}, {30, 20}, {40, 24}, {50, 24}, {60, 24}, {70, 16}, {82.5, 12}}}}; - CBSDFHemisphere::CBSDFHemisphere(const BSDFBasis t_Basis) : + BSDFHemisphere::BSDFHemisphere(const BSDFBasis t_Basis) : m_Directions(generateBSDFDirections(bsdfDefinition.at(t_Basis))) {} - CBSDFHemisphere::CBSDFHemisphere(const std::vector & t_Definitions) : + BSDFHemisphere::BSDFHemisphere(const std::vector & t_Definitions) : m_Directions(generateBSDFDirections(t_Definitions)) {} - const BSDFDirections & CBSDFHemisphere::getDirections(const BSDFDirection tDirection) const + const BSDFDirections & BSDFHemisphere::getDirections(const BSDFDirection tDirection) const { return m_Directions.at(tDirection); } - CBSDFHemisphere CBSDFHemisphere::create(BSDFBasis t_Basis) + BSDFHemisphere BSDFHemisphere::create(BSDFBasis t_Basis) { - return CBSDFHemisphere(t_Basis); + return BSDFHemisphere(t_Basis); } - CBSDFHemisphere CBSDFHemisphere::create(const std::vector & t_Definitions) + BSDFHemisphere BSDFHemisphere::create(const std::vector & t_Definitions) { - return CBSDFHemisphere(t_Definitions); + return BSDFHemisphere(t_Definitions); } std::map - CBSDFHemisphere::generateBSDFDirections(const std::vector & t_Definitions) + BSDFHemisphere::generateBSDFDirections(const std::vector & t_Definitions) { return {{BSDFDirection::Incoming, BSDFDirections(t_Definitions, BSDFDirection::Incoming)}, {BSDFDirection::Outgoing, BSDFDirections(t_Definitions, BSDFDirection::Outgoing)}}; diff --git a/src/SingleLayerOptics/src/BSDFDirections.hpp b/src/SingleLayerOptics/src/BSDFDirections.hpp index 25586bb4..ef33ffb0 100644 --- a/src/SingleLayerOptics/src/BSDFDirections.hpp +++ b/src/SingleLayerOptics/src/BSDFDirections.hpp @@ -11,10 +11,10 @@ namespace SingleLayerOptics { class CBeamDirection; - class CBSDFDefinition + class BSDFDefinition { public: - CBSDFDefinition(double t_Theta, size_t t_NumOfPhis); + BSDFDefinition(double t_Theta, size_t t_NumOfPhis); [[nodiscard]] double theta() const; [[nodiscard]] size_t numOfPhis() const; @@ -46,7 +46,7 @@ namespace SingleLayerOptics { public: BSDFDirections() = default; - BSDFDirections(const std::vector & t_Definitions, BSDFDirection t_Side); + BSDFDirections(const std::vector & t_Definitions, BSDFDirection t_Side); [[nodiscard]] size_t size() const; const CBSDFPatch & operator[](size_t Index) const; std::vector::iterator begin(); @@ -72,9 +72,9 @@ namespace SingleLayerOptics const std::vector & thetaAngles, const std::vector & numPhiAngles); static std::vector - getThetaAngles(const std::vector & t_Definitions) ; + getThetaAngles(const std::vector & t_Definitions) ; static std::vector - getNumberOfPhiAngles(const std::vector & t_Definitions) ; + getNumberOfPhiAngles(const std::vector & t_Definitions) ; static std::vector getLambdaVector(std::vector patches); static FenestrationCommon::SquareMatrix setLambdaMatrix(const std::vector & lambdas); @@ -88,24 +88,24 @@ namespace SingleLayerOptics Full }; - class CBSDFHemisphere + class BSDFHemisphere { public: - static CBSDFHemisphere create(BSDFBasis t_Basis); - static CBSDFHemisphere create(const std::vector & t_Definitions); + static BSDFHemisphere create(BSDFBasis t_Basis); + static BSDFHemisphere create(const std::vector & t_Definitions); [[nodiscard]] const BSDFDirections & getDirections(BSDFDirection t_Side) const; private: - static const std::map> bsdfDefinition; + static const std::map> bsdfDefinition; // Construction for pre-defined basis - explicit CBSDFHemisphere(BSDFBasis t_Basis); + explicit BSDFHemisphere(BSDFBasis t_Basis); // Construction for custom basis - explicit CBSDFHemisphere(const std::vector & t_Definitions); + explicit BSDFHemisphere(const std::vector & t_Definitions); std::map m_Directions; - static std::map generateBSDFDirections(const std::vector & t_Definitions); + static std::map generateBSDFDirections(const std::vector & t_Definitions); }; } // namespace SingleLayerOptics \ No newline at end of file diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index 45fba579..dbfe82c5 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -12,7 +12,7 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { CBSDFLayer::CBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere) : + const BSDFHemisphere & t_Hemisphere) : m_BSDFHemisphere(t_Hemisphere), m_Results(m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)), m_Cell(t_Cell), diff --git a/src/SingleLayerOptics/src/BSDFLayer.hpp b/src/SingleLayerOptics/src/BSDFLayer.hpp index 6fcffc64..908804ff 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.hpp +++ b/src/SingleLayerOptics/src/BSDFLayer.hpp @@ -31,7 +31,7 @@ namespace SingleLayerOptics { public: virtual ~CBSDFLayer() = default; - CBSDFLayer(const std::shared_ptr & t_Cell, const CBSDFHemisphere & t_Directions); + CBSDFLayer(const std::shared_ptr & t_Cell, const BSDFHemisphere & t_Directions); void setSourceData(FenestrationCommon::CSeries & t_SourceData); @@ -75,7 +75,7 @@ namespace SingleLayerOptics void calculate(); void calculate_wv(); - const CBSDFHemisphere m_BSDFHemisphere; + const BSDFHemisphere m_BSDFHemisphere; std::shared_ptr m_Cell; BSDFIntegrator m_Results; // Results over each wavelength diff --git a/src/SingleLayerOptics/src/BSDFLayerMaker.cpp b/src/SingleLayerOptics/src/BSDFLayerMaker.cpp index 36a2554e..ba4e044d 100644 --- a/src/SingleLayerOptics/src/BSDFLayerMaker.cpp +++ b/src/SingleLayerOptics/src/BSDFLayerMaker.cpp @@ -23,7 +23,7 @@ namespace SingleLayerOptics { std::shared_ptr CBSDFLayerMaker::getSpecularLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF) + const BSDFHemisphere & t_BSDF) { auto aDescription = std::make_shared(); auto aCell = std::make_shared(t_Material, aDescription); @@ -32,7 +32,7 @@ namespace SingleLayerOptics std::shared_ptr CBSDFLayerMaker::getPhotovoltaicSpecularLayer( const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, PVPowerPropertiesTable powerTable) { auto aDecription{std::make_shared()}; @@ -45,7 +45,7 @@ namespace SingleLayerOptics std::shared_ptr CBSDFLayerMaker::getCircularPerforatedLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, double x, double y, double thickness, @@ -60,7 +60,7 @@ namespace SingleLayerOptics std::shared_ptr CBSDFLayerMaker::getRectangularPerforatedLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, double x, double y, double thickness, @@ -76,7 +76,7 @@ namespace SingleLayerOptics std::shared_ptr CBSDFLayerMaker::getVenetianLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, double slatWidth, double slatSpacing, double slatTiltAngle, @@ -109,7 +109,7 @@ namespace SingleLayerOptics std::shared_ptr CBSDFLayerMaker::getPerfectlyDiffuseLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF) + const BSDFHemisphere & t_BSDF) { auto aDescription = std::make_shared(); auto aCell = std::make_shared(t_Material, aDescription); @@ -118,7 +118,7 @@ namespace SingleLayerOptics std::shared_ptr CBSDFLayerMaker::getDirectionalDiffuseLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF) + const BSDFHemisphere & t_BSDF) { auto aDescription = std::make_shared(); auto aCell = std::make_shared(t_Material, aDescription); @@ -127,7 +127,7 @@ namespace SingleLayerOptics std::shared_ptr CBSDFLayerMaker::getPreLoadedBSDFLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF) + const BSDFHemisphere & t_BSDF) { auto aDescription = std::make_shared(); auto aCell = std::make_shared(t_Material, aDescription); @@ -136,7 +136,7 @@ namespace SingleLayerOptics std::shared_ptr CBSDFLayerMaker::getWovenLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, double diameter, double spacing) { @@ -146,7 +146,7 @@ namespace SingleLayerOptics } CBSDFLayerMaker::CBSDFLayerMaker(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, std::shared_ptr t_Description, const DistributionMethod t_Method) : m_Cell(nullptr) diff --git a/src/SingleLayerOptics/src/BSDFLayerMaker.hpp b/src/SingleLayerOptics/src/BSDFLayerMaker.hpp index 89bacd75..45f37eb2 100644 --- a/src/SingleLayerOptics/src/BSDFLayerMaker.hpp +++ b/src/SingleLayerOptics/src/BSDFLayerMaker.hpp @@ -14,7 +14,7 @@ namespace SingleLayerOptics class ICellDescription; class CMaterial; - class CBSDFHemisphere; + class BSDFHemisphere; class CBSDFLayer; class CBaseCell; @@ -24,16 +24,16 @@ namespace SingleLayerOptics public: static std::shared_ptr getSpecularLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF); + const BSDFHemisphere & t_BSDF); static std::shared_ptr getPhotovoltaicSpecularLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, PVPowerPropertiesTable powerTable); static std::shared_ptr getCircularPerforatedLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, double x, double y, double thickness, @@ -41,7 +41,7 @@ namespace SingleLayerOptics static std::shared_ptr getRectangularPerforatedLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, double x, double y, double thickness, @@ -50,7 +50,7 @@ namespace SingleLayerOptics static std::shared_ptr getVenetianLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, double slatWidth, double slatSpacing, double slatTiltAngle, @@ -61,24 +61,24 @@ namespace SingleLayerOptics static std::shared_ptr getPerfectlyDiffuseLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF); + const BSDFHemisphere & t_BSDF); static std::shared_ptr getDirectionalDiffuseLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF); + const BSDFHemisphere & t_BSDF); static std::shared_ptr getPreLoadedBSDFLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF); + const BSDFHemisphere & t_BSDF); static std::shared_ptr getWovenLayer(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, double diameter, double spacing); CBSDFLayerMaker(const std::shared_ptr & t_Material, - const CBSDFHemisphere & t_BSDF, + const BSDFHemisphere & t_BSDF, std::shared_ptr t_Description = nullptr, const DistributionMethod t_Method = DistributionMethod::UniformDiffuse); diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp index d5bcda09..18858ee8 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp @@ -16,7 +16,7 @@ namespace SingleLayerOptics { CDirectionalBSDFLayer::CDirectionalBSDFLayer( const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere) : + const BSDFHemisphere & t_Hemisphere) : CBSDFLayer(t_Cell, t_Hemisphere) {} @@ -89,7 +89,7 @@ namespace SingleLayerOptics CDirectionalDiffuseBSDFLayer::CDirectionalDiffuseBSDFLayer( const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere) : + const BSDFHemisphere & t_Hemisphere) : CDirectionalBSDFLayer(t_Cell, t_Hemisphere) {} @@ -99,7 +99,7 @@ namespace SingleLayerOptics } CMatrixBSDFLayer::CMatrixBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere) : + const BSDFHemisphere & t_Hemisphere) : CDirectionalBSDFLayer(t_Cell, t_Hemisphere) {} diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp index 1724faf3..7ff89d4d 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp @@ -14,7 +14,7 @@ namespace SingleLayerOptics { public: CDirectionalBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere); + const BSDFHemisphere & t_Hemisphere); protected: std::shared_ptr cellAsDirectionalDiffuse() const; @@ -32,7 +32,7 @@ namespace SingleLayerOptics { public: CDirectionalDiffuseBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere); + const BSDFHemisphere & t_Hemisphere); protected: double diffuseDistributionScalar(size_t outgoingDirection) override; @@ -42,7 +42,7 @@ namespace SingleLayerOptics { public: CMatrixBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere); + const BSDFHemisphere & t_Hemisphere); protected: double diffuseDistributionScalar(size_t outgoingDirection) override; diff --git a/src/SingleLayerOptics/src/Material.cpp b/src/SingleLayerOptics/src/Material.cpp index 7764dc19..642b56d3 100644 --- a/src/SingleLayerOptics/src/Material.cpp +++ b/src/SingleLayerOptics/src/Material.cpp @@ -74,7 +74,7 @@ namespace SingleLayerOptics std::vector> const & Tbvis, std::vector> const & Rfvis, std::vector> const & Rbvis, - CBSDFHemisphere const & hemisphere, + BSDFHemisphere const & hemisphere, double ratio) { auto aSolarRangeMaterial = std::make_shared( @@ -94,7 +94,7 @@ namespace SingleLayerOptics std::vector> const & Tbvis, std::vector> const & Rfvis, std::vector> const & Rbvis, - CBSDFHemisphere const & hemisphere, + BSDFHemisphere const & hemisphere, const FenestrationCommon::CSeries & solarRadiation) { auto aSolarRangeMaterial = std::make_shared( @@ -130,7 +130,7 @@ namespace SingleLayerOptics const std::vector> & Tb, const std::vector> & Rf, const std::vector> & Rb, - const CBSDFHemisphere & hemisphere, + const BSDFHemisphere & hemisphere, FenestrationCommon::WavelengthRange t_Range) { return std::make_shared(Tf, Tb, Rf, Rb, hemisphere, t_Range); @@ -141,7 +141,7 @@ namespace SingleLayerOptics const std::vector> & Tb, const std::vector> & Rf, const std::vector> & Rb, - const CBSDFHemisphere & hemisphere, + const BSDFHemisphere & hemisphere, const double minLambda, const double maxLambda) { diff --git a/src/SingleLayerOptics/src/Material.hpp b/src/SingleLayerOptics/src/Material.hpp index 27124291..6e12c607 100644 --- a/src/SingleLayerOptics/src/Material.hpp +++ b/src/SingleLayerOptics/src/Material.hpp @@ -13,7 +13,7 @@ namespace SingleLayerOptics { class CMaterial; class CMaterialPhotovoltaicSample; - class CBSDFHemisphere; + class BSDFHemisphere; class Material { @@ -57,7 +57,7 @@ namespace SingleLayerOptics std::vector> const & Tbvis, std::vector> const & Rfvis, std::vector> const & Rbvis, - CBSDFHemisphere const & hemisphere, + BSDFHemisphere const & hemisphere, double ratio); static std::shared_ptr @@ -69,7 +69,7 @@ namespace SingleLayerOptics std::vector> const & Tbvis, std::vector> const & Rfvis, std::vector> const & Rbvis, - CBSDFHemisphere const & hemisphere, + BSDFHemisphere const & hemisphere, const FenestrationCommon::CSeries & solarRadiation); static std::shared_ptr singleBandMaterial( @@ -83,7 +83,7 @@ namespace SingleLayerOptics const std::vector> & Tb, const std::vector> & Rf, const std::vector> & Rb, - const CBSDFHemisphere & hemisphere, + const BSDFHemisphere & hemisphere, FenestrationCommon::WavelengthRange t_Range); static std::shared_ptr @@ -91,7 +91,7 @@ namespace SingleLayerOptics const std::vector> & Tb, const std::vector> & Rf, const std::vector> & Rb, - const CBSDFHemisphere & hemisphere, + const BSDFHemisphere & hemisphere, const double minLambda, const double maxLambda); diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index 4d735ea1..41903d2e 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -743,7 +743,7 @@ namespace SingleLayerOptics std::vector> const & t_Tb, std::vector> const & t_Rf, std::vector> const & t_Rb, - CBSDFHemisphere const & t_Hemisphere, + BSDFHemisphere const & t_Hemisphere, double minLambda, double maxLambda) : CMaterial(minLambda, maxLambda), m_Hemisphere(t_Hemisphere) @@ -767,7 +767,7 @@ namespace SingleLayerOptics std::vector> const & t_Tb, std::vector> const & t_Rf, std::vector> const & t_Rb, - CBSDFHemisphere const & t_Hemisphere, + BSDFHemisphere const & t_Hemisphere, FenestrationCommon::WavelengthRange t_Range) : CMaterial(t_Range), m_Hemisphere(t_Hemisphere) { @@ -787,7 +787,7 @@ namespace SingleLayerOptics } double calcDirectHemispheric(std::vector> const & m, - CBSDFHemisphere const & hemisphere, + BSDFHemisphere const & hemisphere, size_t incomingIdx) { const auto outgoingLambdas = @@ -851,7 +851,7 @@ namespace SingleLayerOptics return m_Property.at({t_Property, t_Side}); } - CBSDFHemisphere CMaterialSingleBandBSDF::getHemisphere() const + BSDFHemisphere CMaterialSingleBandBSDF::getHemisphere() const { return m_Hemisphere; } @@ -865,7 +865,7 @@ namespace SingleLayerOptics } void CMaterialSingleBandBSDF::validateMatrix(std::vector> const & matrix, - CBSDFHemisphere const & hemisphere) const + BSDFHemisphere const & hemisphere) const { size_t rowCt = matrix.size(); size_t colCt = matrix[0].size(); diff --git a/src/SingleLayerOptics/src/MaterialDescription.hpp b/src/SingleLayerOptics/src/MaterialDescription.hpp index 393b7b2f..c35e9268 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.hpp +++ b/src/SingleLayerOptics/src/MaterialDescription.hpp @@ -7,7 +7,7 @@ #include #include #include "BeamDirection.hpp" // Need to include rather than forward declare to default incoming and outgoing directions to CBeamDirection() -#include "BSDFDirections.hpp" // Needed to have CBSDFHemisphere as a member of the BSDF materials. Could forward declare if BSDF material was changed to hide members using the pimpl ideom. +#include "BSDFDirections.hpp" // Needed to have BSDFHemisphere as a member of the BSDF materials. Could forward declare if BSDF material was changed to hide members using the pimpl ideom. namespace FenestrationCommon { @@ -159,14 +159,14 @@ namespace SingleLayerOptics std::vector> const & t_Tb, std::vector> const & t_Rf, std::vector> const & t_Rb, - CBSDFHemisphere const & t_Hemisphere, + BSDFHemisphere const & t_Hemisphere, double minLambda, double maxLambda); CMaterialSingleBandBSDF(std::vector> const & t_Tf, std::vector> const & t_Tb, std::vector> const & t_Rf, std::vector> const & t_Rb, - CBSDFHemisphere const & t_Hemisphere, + BSDFHemisphere const & t_Hemisphere, FenestrationCommon::WavelengthRange t_Range); double @@ -185,7 +185,7 @@ namespace SingleLayerOptics getBSDFMatrix(FenestrationCommon::Property const & t_Property, FenestrationCommon::Side const & t_Side) const; - CBSDFHemisphere getHemisphere() const; + BSDFHemisphere getHemisphere() const; private: std::vector calculateBandWavelengths() override; @@ -193,13 +193,13 @@ namespace SingleLayerOptics // has directions. Assumption: All the inner vectors have the same number of values // This should probably be somewhere more general, just putting it here for now void validateMatrix(std::vector> const & matrix, - CBSDFHemisphere const & m_Hemisphere) const; + BSDFHemisphere const & m_Hemisphere) const; protected: std::map, std::vector>> m_Property; - CBSDFHemisphere m_Hemisphere; + BSDFHemisphere m_Hemisphere; }; ////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.cpp b/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.cpp index d9a7c4a1..c9f5bd70 100644 --- a/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.cpp @@ -5,7 +5,7 @@ namespace SingleLayerOptics { PhotovoltaicSpecularBSDFLayer::PhotovoltaicSpecularBSDFLayer( - const std::shared_ptr & t_Cell, const CBSDFHemisphere & t_Hemisphere) : + const std::shared_ptr & t_Cell, const BSDFHemisphere & t_Hemisphere) : CSpecularBSDFLayer(t_Cell, t_Hemisphere) { const auto material(t_Cell->getMaterial()); diff --git a/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.hpp b/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.hpp index 86a10331..3c6529e0 100644 --- a/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.hpp @@ -14,7 +14,7 @@ namespace SingleLayerOptics { public: PhotovoltaicSpecularBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere); + const BSDFHemisphere & t_Hemisphere); [[nodiscard]] std::vector> jscPrime( FenestrationCommon::Side t_Side, diff --git a/src/SingleLayerOptics/src/ScatteringLayer.cpp b/src/SingleLayerOptics/src/ScatteringLayer.cpp index 3c05fb82..4dc38e1b 100644 --- a/src/SingleLayerOptics/src/ScatteringLayer.cpp +++ b/src/SingleLayerOptics/src/ScatteringLayer.cpp @@ -70,7 +70,7 @@ namespace SingleLayerOptics // Scattering layer can also be created from material and cell desctiption in which case // integration will be performed using BSDF distribution while direct-direct component will // be taken directly from cell. - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); auto aMaker = CBSDFLayerMaker(t_Material, aBSDF, t_Description, t_Method); m_BSDFLayer = aMaker.getLayer(); } @@ -269,7 +269,7 @@ namespace SingleLayerOptics CScatteringLayer CScatteringLayer::createSpecularLayer(const std::shared_ptr & t_Material) { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); return CScatteringLayer(CBSDFLayerMaker::getSpecularLayer(t_Material, aBSDF)); } @@ -280,7 +280,7 @@ namespace SingleLayerOptics CScatteringLayer CScatteringLayer::createWovenLayer( const std::shared_ptr & t_Material, const double diameter, const double spacing) { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); return CScatteringLayer( CBSDFLayerMaker::getWovenLayer(t_Material, aBSDF, diameter, spacing)); } @@ -288,7 +288,7 @@ namespace SingleLayerOptics CScatteringLayer CScatteringLayer::createPerfectlyDiffusingLayer(const std::shared_ptr & t_Material) { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); return CScatteringLayer(CBSDFLayerMaker::getPerfectlyDiffuseLayer(t_Material, aBSDF)); } @@ -302,7 +302,7 @@ namespace SingleLayerOptics const DistributionMethod method, const bool isHorizontal) { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); return CScatteringLayer(CBSDFLayerMaker::getVenetianLayer(t_Material, aBSDF, slatWidth, @@ -321,7 +321,7 @@ namespace SingleLayerOptics double thickness, double radius) { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); return CScatteringLayer( CBSDFLayerMaker::getCircularPerforatedLayer(t_Material, aBSDF, x, y, thickness, radius)); } @@ -334,7 +334,7 @@ namespace SingleLayerOptics const double xHole, const double yHole) { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); return CScatteringLayer(CBSDFLayerMaker::getRectangularPerforatedLayer( t_Material, aBSDF, x, y, thickness, xHole, yHole)); } diff --git a/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp b/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp index 52c60f51..2932f3c1 100644 --- a/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp @@ -11,7 +11,7 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { CSpecularBSDFLayer::CSpecularBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere) : + const BSDFHemisphere & t_Hemisphere) : CBSDFLayer(t_Cell, t_Hemisphere) {} diff --git a/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp b/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp index defc48e6..56e699cb 100644 --- a/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp @@ -15,7 +15,7 @@ namespace SingleLayerOptics { public: CSpecularBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere); + const BSDFHemisphere & t_Hemisphere); protected: [[nodiscard]] std::shared_ptr cellAsSpecular() const; diff --git a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp index 118a1389..3d73221b 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp @@ -14,7 +14,7 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { CUniformDiffuseBSDFLayer::CUniformDiffuseBSDFLayer( - const std::shared_ptr & t_Cell, const CBSDFHemisphere & t_Hemisphere) : + const std::shared_ptr & t_Cell, const BSDFHemisphere & t_Hemisphere) : CBSDFLayer(t_Cell, t_Hemisphere) {} diff --git a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp index 37272e94..5a4968eb 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp @@ -14,7 +14,7 @@ namespace SingleLayerOptics { public: CUniformDiffuseBSDFLayer(const std::shared_ptr & t_Cell, - const CBSDFHemisphere & t_Hemisphere); + const BSDFHemisphere & t_Hemisphere); protected: std::shared_ptr cellAsUniformDiffuse() const; diff --git a/src/SingleLayerOptics/tst/units/BSDFDirectionsClosestIndex.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFDirectionsClosestIndex.unit.cpp index 38aceaf8..1dd80156 100644 --- a/src/SingleLayerOptics/tst/units/BSDFDirectionsClosestIndex.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFDirectionsClosestIndex.unit.cpp @@ -11,7 +11,7 @@ using namespace SingleLayerOptics; class TestBSDFDirectionsClosestIndex : public testing::Test { private: - CBSDFHemisphere m_BSDFHemisphere{CBSDFHemisphere::create(BSDFBasis::Quarter)}; + BSDFHemisphere m_BSDFHemisphere{BSDFHemisphere::create(BSDFBasis::Quarter)}; public: const BSDFDirections & GetDirections(const BSDFDirection t_Side) const diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp index 4d140c98..dd50e147 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp @@ -15,7 +15,7 @@ using namespace SpectralAveraging; class TestBSDFMaterialDualBand : public testing::Test { public: - CBSDFHemisphere m_Hemisphere{CBSDFHemisphere::create(BSDFBasis::Small)}; + BSDFHemisphere m_Hemisphere{BSDFHemisphere::create(BSDFBasis::Small)}; std::shared_ptr m_MaterialVis; std::shared_ptr m_MaterialSol; std::shared_ptr m_Material; diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp index 1e936818..b27d7adb 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp @@ -7,7 +7,7 @@ #include "WCESingleLayerOptics.hpp" #include "WCECommon.hpp" -using SingleLayerOptics::CBSDFHemisphere; +using SingleLayerOptics::BSDFHemisphere; using SingleLayerOptics::BSDFBasis; using SingleLayerOptics::CMaterialSingleBandBSDF; using SingleLayerOptics::CMaterialDualBandBSDF; @@ -17,7 +17,7 @@ using SingleLayerOptics::CBeamDirection; class TestBSDFMaterialDualBandCondensedRange : public testing::Test { public: - CBSDFHemisphere m_Hemisphere{CBSDFHemisphere::create(BSDFBasis::Small)}; + BSDFHemisphere m_Hemisphere{BSDFHemisphere::create(BSDFBasis::Small)}; std::shared_ptr m_MaterialVis; std::shared_ptr m_MaterialSol; std::shared_ptr m_Material; diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp index af866b89..8fad634a 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp @@ -15,7 +15,7 @@ using namespace SpectralAveraging; class TestBSDFMaterialSingleBand : public testing::Test { public: - CBSDFHemisphere m_Hemisphere{CBSDFHemisphere::create(BSDFBasis::Small)}; + BSDFHemisphere m_Hemisphere{BSDFHemisphere::create(BSDFBasis::Small)}; std::shared_ptr m_Material; std::vector> m_Tf; std::vector> m_Tb; diff --git a/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp index 35d5d9a5..73869ffc 100644 --- a/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFQuarterBasis.unit.cpp @@ -11,7 +11,7 @@ using namespace SingleLayerOptics; class TestBSDFQuarterBasis : public testing::Test { private: - CBSDFHemisphere m_BSDFHemisphere{CBSDFHemisphere::create(BSDFBasis::Quarter)}; + BSDFHemisphere m_BSDFHemisphere{BSDFHemisphere::create(BSDFBasis::Quarter)}; public: diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp index 27622aba..e8937ba8 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp @@ -31,7 +31,7 @@ class TestCircularPerforatedShade1 : public testing::Test const auto thickness = 0.005; // m const auto radius = 0.00835; // m - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp index 40f3750b..71fdcee4 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp @@ -31,7 +31,7 @@ class TestCircularPerforatedShade2 : public testing::Test const auto thickness = 0.0050; // m const auto radius = 0.0; // m - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp index 9d2b176b..b7955a00 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeMultiWavelength.unit.cpp @@ -38,7 +38,7 @@ class TestCircularPerforatedShadeMultiWavelength : public testing::Test const auto thickness = 5; // mm const auto radius = 8.35; // mm - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Layer = diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp index ac05aa9f..c8878801 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp @@ -16,7 +16,7 @@ class TestCircularPerforatedShadeNFRC18000 : public testing::Test protected: virtual void SetUp() { - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // create material const auto Tmat = 0.0; diff --git a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp index c6b53ae1..7174d6e6 100644 --- a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp @@ -25,7 +25,7 @@ class TestPerfectDiffuseShade1 : public testing::Test auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); - auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); m_Shade = CBSDFLayerMaker::getPerfectlyDiffuseLayer(aMaterial, aBSDF); } diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp index d1c689ba..89ac83fc 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp @@ -32,7 +32,7 @@ class TestRectangularPerforatedShade1 : public testing::Test const auto xHole = 3.175; // mm const auto yHole = 6.35; // mm - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); m_Shade = CBSDFLayerMaker::getRectangularPerforatedLayer( aMaterial, aBSDF, x, y, thickness, xHole, yHole); diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp index d39df38d..00941a8d 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp @@ -32,7 +32,7 @@ class TestRectangularPerforatedShade2 : public testing::Test const auto xHole = 5.0; // mm const auto yHole = 8.0; // mm - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); m_Shade = CBSDFLayerMaker::getRectangularPerforatedLayer( aMaterial, aBSDF, x, y, thickness, xHole, yHole); diff --git a/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp b/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp index dd2aafc8..9156cfa9 100644 --- a/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp @@ -53,7 +53,7 @@ class SinglePaneBSDF_VenetianIR : public testing::Test const auto commonWavelengths{solarRadiation.getXArray()}; const auto aBSDF = - SingleLayerOptics::CBSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Quarter); + SingleLayerOptics::BSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Quarter); // Venetian blind material diff --git a/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp index 0f4b3b09..7fd57e02 100644 --- a/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp @@ -654,7 +654,7 @@ class TestSpecularAngularLayer_102 : public testing::Test std::make_shared(m_Measurements, WavelengthRange::Solar); // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); // make layer m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); diff --git a/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp index f54e2eb5..08ff34b7 100644 --- a/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp @@ -65,7 +65,7 @@ class TestSpecularBSDFLayer_SingleBandMaterial : public testing::Test Material::singleBandMaterial(Tsol, Tsol, Rfsol, Rbsol, minLambda, maxLambda)}; // Define BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); // make layer m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp index 5be8fc73..1c8b14c0 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp @@ -37,7 +37,7 @@ class TestSpecularLayerMultiWavelength_102 : public testing::Test const auto aMaterial = Material::nBandMaterial(aMeasurements, thickness, aType, minLambda, maxLambda); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp index 2ae853df..3c7dc8c0 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp @@ -121,7 +121,7 @@ class TestSpecularLayer_102 : public testing::Test loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); // make layer m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp index 6d9cee86..e559fdc4 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp @@ -121,7 +121,7 @@ class TestSpecularLayer_103 : public testing::Test loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); // Define BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); // make layer m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp index f551a9ce..205da9f2 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp @@ -310,7 +310,7 @@ class TestSpecularLayer_1042 : public testing::Test double thickness = 3.18e-3; // [m] auto aMaterial = Material::nBandMaterial( loadSampleData_NFRC_1042(), thickness, MaterialType::Coated, WavelengthRange::Solar); - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); // make layer m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp index c2d8b60d..422d3bc8 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp @@ -37,7 +37,7 @@ class TestVenetianDirectionalShadeCurvedMinus45_0 : public testing::Test DistributionMethod aDistribution = DistributionMethod::DirectionalDiffuse; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp index 18035646..bc22010a 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp @@ -36,7 +36,7 @@ class TestVenetianDirectionalShadeFlat0_1 : public testing::Test DistributionMethod aDistribution = DistributionMethod::DirectionalDiffuse; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp index 1febb840..b6e5dfb4 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp @@ -36,7 +36,7 @@ class TestVenetianDirectionalShadeFlat0_2 : public testing::Test DistributionMethod aDistribution = DistributionMethod::DirectionalDiffuse; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp index 9ecda365..b0798dc8 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp @@ -36,7 +36,7 @@ class TestVenetianDirectionalShadeFlat0_3 : public testing::Test DistributionMethod aDistribution = DistributionMethod::DirectionalDiffuse; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp index 800cd96d..6fb29e96 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp @@ -36,7 +36,7 @@ class TestVenetianDirectionalShadeFlat45_5 : public testing::Test DistributionMethod aDistribution = DistributionMethod::DirectionalDiffuse; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp index d4c01454..616040cd 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5_Multiwavelength.unit.cpp @@ -40,7 +40,7 @@ class TestVenetianDirectionalShadeFlat45_5_Multiwavelength : public testing::Tes DistributionMethod aDistribution = DistributionMethod::DirectionalDiffuse; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Layer = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp index f58144b9..79bc326f 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp @@ -34,7 +34,7 @@ class TestVenetianUniformShadeCurvedMinus45_0 : public testing::Test const size_t numOfSlatSegments = 5; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp index 8aa79f7f..b74347d2 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp @@ -34,7 +34,7 @@ class TestVenetianUniformShadeCurvedMinus55_0 : public testing::Test const size_t numOfSlatSegments = 2; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp index bd901087..cd833c3c 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp @@ -34,7 +34,7 @@ class TestVenetianUniformShadeCurvedZeroAngle_0 : public testing::Test const size_t numOfSlatSegments = 5; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp index 4d142219..da2b1825 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp @@ -35,7 +35,7 @@ class TestVenetianUniformShadeFlat0_1 : public testing::Test const size_t numOfSlatSegments = 1; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp index 15c4045a..ca539522 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp @@ -34,7 +34,7 @@ class TestVenetianUniformShadeFlat0_2 : public testing::Test const size_t numOfSlatSegments = 5; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp index 2cd9d47c..e57940ce 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp @@ -33,7 +33,7 @@ class TestVenetianUniformShadeFlat45_1 : public testing::Test const size_t numOfSlatSegments = 1; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Shade = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp index 9a5c15e2..61cfe7b2 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_5_Multiwavelength.unit.cpp @@ -38,7 +38,7 @@ class TestVenetianUniformShadeFlat45_5_Multiwavelength : public testing::Test const size_t numOfSlatSegments = 5; // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Layer = CBSDFLayerMaker::getVenetianLayer(aMaterial, diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp index bfc55881..536ebac3 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp @@ -30,7 +30,7 @@ class TestVenetianUniformShadeMatrix : public testing::Test // create BSDF const auto aBSDF = - SingleLayerOptics::CBSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Quarter); + SingleLayerOptics::BSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Quarter); // make layer m_Shade = SingleLayerOptics::CBSDFLayerMaker::getVenetianLayer( diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp index db395a9c..b0b3df8c 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp @@ -30,7 +30,7 @@ class TestVenetianUniformShadeMatrixVertical : public testing::Test // create BSDF const auto aBSDF = - SingleLayerOptics::CBSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Quarter); + SingleLayerOptics::BSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Quarter); const auto isHorizontalVenetian{false}; // make layer diff --git a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp index 16e26d2e..1bf487f4 100644 --- a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp @@ -35,7 +35,7 @@ class TestWovenShadeMultiWavelength : public testing::Test const auto spacing = 19.05; // mm // create BSDF - const auto aBSDF = CBSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); // make layer m_Layer = CBSDFLayerMaker::getWovenLayer(aMaterial, aBSDF, diameter, spacing); diff --git a/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp b/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp index b40305ba..0ecd94b0 100644 --- a/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp @@ -30,7 +30,7 @@ class TestWovenShadeUniformMaterial : public testing::Test const auto spacing = 0.003; // m // create BSDF - const auto aBSDF{CBSDFHemisphere::create(BSDFBasis::Quarter)}; + const auto aBSDF{BSDFHemisphere::create(BSDFBasis::Quarter)}; // make layer m_Shade = CBSDFLayerMaker::getWovenLayer(aMaterial, aBSDF, diameter, spacing); From 234d13a0f61ab506f11ce7ec726411d3482ef382 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 13:36:02 -0700 Subject: [PATCH 21/81] CEquivalentBSDFLayer member m_TotA is not using shared pointer anymore --- src/Common/src/MatrixSeries.hpp | 1 + .../src/EquivalentBSDFLayer.cpp | 6 ++--- .../src/EquivalentBSDFLayer.hpp | 26 +++++-------------- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 4 +-- 4 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/Common/src/MatrixSeries.hpp b/src/Common/src/MatrixSeries.hpp index b349af34..99663ee4 100644 --- a/src/Common/src/MatrixSeries.hpp +++ b/src/Common/src/MatrixSeries.hpp @@ -13,6 +13,7 @@ namespace FenestrationCommon class CMatrixSeries { public: + CMatrixSeries() = default; CMatrixSeries(const size_t t_Size1, const size_t t_Size2); CMatrixSeries(const CMatrixSeries & t_MatrixSeries); CMatrixSeries & operator=(CMatrixSeries const & t_MatrixSeries); diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index f6c9876d..f1227684 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -48,7 +48,7 @@ namespace MultiLayerOptics return m_CombinedLayerWavelengths.back(); } - std::shared_ptr CEquivalentBSDFLayer::getTotalA(const Side t_Side) + CMatrixSeries CEquivalentBSDFLayer::getTotalA(const Side t_Side) { if(!m_Calculated) { @@ -105,7 +105,7 @@ namespace MultiLayerOptics for(Side aSide : EnumSide()) { - m_TotA[aSide] = std::make_shared(numberOfLayers, matrixSize); + m_TotA[aSide] = CMatrixSeries(numberOfLayers, matrixSize); m_TotJSC[aSide] = std::make_shared(numberOfLayers, matrixSize); for(PropertySimple aProperty : EnumPropertySimple()) { @@ -134,7 +134,7 @@ namespace MultiLayerOptics { for(size_t k = 0; k < t_NumOfLayers; ++k) { - m_TotA.at(aSide)->addProperties( + m_TotA.at(aSide).addProperties( k, curWL, m_LayersWL[i].getLayerAbsorptances(k + 1, aSide)); m_TotJSC.at(aSide)->addProperties( k, curWL, m_LayersWL[i].getLayerJSC(k + 1, aSide)); diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index 0ba45b9e..03861d3f 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -8,18 +8,6 @@ #include #include -//#include "AbsorptancesMultiPaneBSDF.hpp" - -namespace FenestrationCommon -{ - class SquareMatrix; - class CMatrixSeries; - class CSeries; - enum class Side; - enum class PropertySimple; - -} // namespace FenestrationCommon - namespace SingleLayerOptics { enum class BSDFDirection; @@ -31,7 +19,8 @@ namespace MultiLayerOptics { class CEquivalentBSDFLayerSingleBand; - // Calculates equivalent BSDF matrices for transmittances and reflectances and vectors for absorptances + // Calculates equivalent BSDF matrices for transmittances and reflectances and vectors for + // absorptances class CEquivalentBSDFLayer { public: @@ -45,8 +34,7 @@ namespace MultiLayerOptics double getMaxLambda() const; // Absorptance wavelength by wavelength matrices - std::shared_ptr - getTotalA(FenestrationCommon::Side t_Side); + FenestrationCommon::CMatrixSeries getTotalA(const FenestrationCommon::Side t_Side); // Photovoltaic current (scaled to income irradiance equal to one) std::shared_ptr @@ -58,7 +46,7 @@ namespace MultiLayerOptics void setSolarRadiation(FenestrationCommon::CSeries & t_SolarRadiation); - [[nodiscard]] std::vector>& getLayers(); + [[nodiscard]] std::vector> & getLayers(); [[nodiscard]] size_t numberOfLayers() const; private: @@ -77,9 +65,9 @@ namespace MultiLayerOptics // Total absorptance coefficients for every wavelength (does not include source data) // First dimension contain number of layers and second dimension is BSDF matrix size - // Each series contain the data arranged by wavelengths (absorptance for the given wavelength) - std::map> - m_TotA; + // Each series contain the data arranged by wavelengths (absorptance for the given + // wavelength) + std::map m_TotA; // Total photovoltaic current (see above comment for absorptance std::map> diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index c34b4be1..37ac495e 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -180,9 +180,7 @@ namespace MultiLayerOptics for(Side aSide : EnumSide()) { - // It is important to take a copy of aTotalA because it will be used to - // multiply and integrate later and local values will change - CMatrixSeries aTotalA = *m_EquivalentLayer.getTotalA(aSide); + CMatrixSeries aTotalA = m_EquivalentLayer.getTotalA(aSide); aTotalA.mMult(m_IncomingSpectra); // Calculates absorbed energy in every layer for every wavelength aTotalA.integrate(m_Integrator, m_NormalizationCoefficient); From 476b5aa3077f98d098f998ddcbd5137204a5fdf7 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 13:43:14 -0700 Subject: [PATCH 22/81] CEquivalentBSDFLayer member m_Tot is not using shared pointer anymore --- src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp | 8 +++----- src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp | 7 ++++--- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 4 +--- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index f1227684..f8fc6c75 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -66,8 +66,7 @@ namespace MultiLayerOptics return m_TotJSC.at(t_Side); } - std::shared_ptr CEquivalentBSDFLayer::getTotal(const Side t_Side, - const PropertySimple t_Property) + CMatrixSeries CEquivalentBSDFLayer::getTotal(const Side t_Side, const PropertySimple t_Property) { if(!m_Calculated) { @@ -109,8 +108,7 @@ namespace MultiLayerOptics m_TotJSC[aSide] = std::make_shared(numberOfLayers, matrixSize); for(PropertySimple aProperty : EnumPropertySimple()) { - m_Tot[std::make_pair(aSide, aProperty)] = - std::make_shared(matrixSize, matrixSize); + m_Tot[std::make_pair(aSide, aProperty)] = CMatrixSeries(matrixSize, matrixSize); } } @@ -143,7 +141,7 @@ namespace MultiLayerOptics { auto curPropertyMatrix = m_LayersWL[i].getProperty(aSide, aProperty); m_Tot.at(std::make_pair(aSide, aProperty)) - ->addProperties(curWL, curPropertyMatrix); + .addProperties(curWL, curPropertyMatrix); } } } diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index 03861d3f..b7ab1213 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -41,8 +41,9 @@ namespace MultiLayerOptics getTotalJSC(FenestrationCommon::Side t_Side); // Transmittance and reflectance wavelength by wavelength matrices - std::shared_ptr - getTotal(FenestrationCommon::Side t_Side, FenestrationCommon::PropertySimple t_Property); + FenestrationCommon::CMatrixSeries + getTotal(const FenestrationCommon::Side t_Side, + const FenestrationCommon::PropertySimple t_Property); void setSolarRadiation(FenestrationCommon::CSeries & t_SolarRadiation); @@ -76,7 +77,7 @@ namespace MultiLayerOptics // Total Transmittance and Reflectance values for every wavelength (does not include source // data) std::map, - std::shared_ptr> + FenestrationCommon::CMatrixSeries> m_Tot; FenestrationCommon::SquareMatrix m_Lambda; diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index 37ac495e..d9249140 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -206,9 +206,7 @@ namespace MultiLayerOptics for(PropertySimple aProprerty : EnumPropertySimple()) { - // Same as for aTotalA. Copy need to be taken because of multiplication - // and integration - CMatrixSeries aTot = *m_EquivalentLayer.getTotal(aSide, aProprerty); + CMatrixSeries aTot = m_EquivalentLayer.getTotal(aSide, aProprerty); aTot.mMult(m_IncomingSpectra); aTot.integrate(m_Integrator, m_NormalizationCoefficient); aResults[std::make_pair(aSide, aProprerty)] = From 6c13b2a67b26ef63067d4319d7b4f14c53f35d30 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 13:49:40 -0700 Subject: [PATCH 23/81] CEquivalentBSDFLayer member m_TotJSC is not using shared pointer anymore --- src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp | 8 ++++---- src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp | 6 ++---- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 7 ++++--- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index f8fc6c75..3b247f6b 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -57,7 +57,7 @@ namespace MultiLayerOptics return m_TotA.at(t_Side); } - std::shared_ptr CEquivalentBSDFLayer::getTotalJSC(Side t_Side) + CMatrixSeries CEquivalentBSDFLayer::getTotalJSC(Side t_Side) { if(!m_Calculated) { @@ -105,10 +105,10 @@ namespace MultiLayerOptics for(Side aSide : EnumSide()) { m_TotA[aSide] = CMatrixSeries(numberOfLayers, matrixSize); - m_TotJSC[aSide] = std::make_shared(numberOfLayers, matrixSize); + m_TotJSC[aSide] = CMatrixSeries(numberOfLayers, matrixSize); for(PropertySimple aProperty : EnumPropertySimple()) { - m_Tot[std::make_pair(aSide, aProperty)] = CMatrixSeries(matrixSize, matrixSize); + m_Tot[{aSide, aProperty}] = CMatrixSeries(matrixSize, matrixSize); } } @@ -134,7 +134,7 @@ namespace MultiLayerOptics { m_TotA.at(aSide).addProperties( k, curWL, m_LayersWL[i].getLayerAbsorptances(k + 1, aSide)); - m_TotJSC.at(aSide)->addProperties( + m_TotJSC.at(aSide).addProperties( k, curWL, m_LayersWL[i].getLayerJSC(k + 1, aSide)); } for(auto aProperty : EnumPropertySimple()) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index b7ab1213..0ff0a3bd 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -37,8 +37,7 @@ namespace MultiLayerOptics FenestrationCommon::CMatrixSeries getTotalA(const FenestrationCommon::Side t_Side); // Photovoltaic current (scaled to income irradiance equal to one) - std::shared_ptr - getTotalJSC(FenestrationCommon::Side t_Side); + FenestrationCommon::CMatrixSeries getTotalJSC(FenestrationCommon::Side t_Side); // Transmittance and reflectance wavelength by wavelength matrices FenestrationCommon::CMatrixSeries @@ -71,8 +70,7 @@ namespace MultiLayerOptics std::map m_TotA; // Total photovoltaic current (see above comment for absorptance - std::map> - m_TotJSC; + std::map m_TotJSC; // Total Transmittance and Reflectance values for every wavelength (does not include source // data) diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index d9249140..97c80562 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -187,7 +187,7 @@ namespace MultiLayerOptics // Calculates total absorptance for every layer over the given wavelength range m_Abs[aSide] = aTotalA.getSums(minLambda, maxLambda, m_IncomingSolar); - CMatrixSeries jscTotal = *m_EquivalentLayer.getTotalJSC(aSide); + CMatrixSeries jscTotal = m_EquivalentLayer.getTotalJSC(aSide); jscTotal.integrate(m_Integrator, m_NormalizationCoefficient); auto jscSum{jscTotal.getSums(minLambda, maxLambda)}; @@ -209,7 +209,7 @@ namespace MultiLayerOptics CMatrixSeries aTot = m_EquivalentLayer.getTotal(aSide, aProprerty); aTot.mMult(m_IncomingSpectra); aTot.integrate(m_Integrator, m_NormalizationCoefficient); - aResults[std::make_pair(aSide, aProprerty)] = + aResults[{aSide, aProprerty}] = aTot.getSquaredMatrixSums(minLambda, maxLambda, m_IncomingSolar); } @@ -245,7 +245,8 @@ namespace MultiLayerOptics const size_t numOfLayers = m_Abs[t_Side].size(); for(size_t layNum = 0; layNum < numOfLayers; ++layNum) { - m_AbsHem[t_Side].push_back(integrateBSDFAbsorptance(m_Results.lambdaVector(), m_Abs[t_Side][layNum])); + m_AbsHem[t_Side].push_back( + integrateBSDFAbsorptance(m_Results.lambdaVector(), m_Abs[t_Side][layNum])); m_AbsHemElectricity[t_Side].push_back( integrateBSDFAbsorptance(m_Results.lambdaVector(), m_AbsElectricity[t_Side][layNum])); } From 89554ee1f7583364a60e17b3d4c22d54b377e004 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 14:28:25 -0700 Subject: [PATCH 24/81] Some renaming and old functions removal from CMultiPaneBSDF class --- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 20 ++------ src/MultiLayerOptics/src/MultiPaneBSDF.hpp | 6 +-- src/SingleLayerOptics/src/BSDFIntegrator.cpp | 54 ++++++++++---------- src/SingleLayerOptics/src/BSDFIntegrator.hpp | 10 ++-- 4 files changed, 38 insertions(+), 52 deletions(-) diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index 97c80562..e9237071 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -115,14 +115,14 @@ namespace MultiLayerOptics CMultiPaneBSDF::CMultiPaneBSDF( const std::vector> & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation) : - CMultiPaneBSDF(t_Layer, t_SolarRadiation, getCommonWavelengths(t_Layer)) + CMultiPaneBSDF(t_Layer, t_SolarRadiation, getCommonWavelengthsFromLayers(t_Layer)) {} CMultiPaneBSDF::CMultiPaneBSDF( const std::vector> & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation, const FenestrationCommon::CSeries & t_DetectorData) : - CMultiPaneBSDF(t_Layer, t_SolarRadiation, t_DetectorData, getCommonWavelengths(t_Layer)) + CMultiPaneBSDF(t_Layer, t_SolarRadiation, t_DetectorData, getCommonWavelengthsFromLayers(t_Layer)) {} SquareMatrix CMultiPaneBSDF::getMatrix(const double minLambda, @@ -252,7 +252,7 @@ namespace MultiLayerOptics } } - std::vector CMultiPaneBSDF::getCommonWavelengths( + std::vector CMultiPaneBSDF::getCommonWavelengthsFromLayers( const std::vector> & t_Layer) const { FenestrationCommon::CCommonWavelengths cw; @@ -263,20 +263,6 @@ namespace MultiLayerOptics return cw.getCombinedWavelengths(FenestrationCommon::Combine::Interpolate); } - std::vector> CMultiPaneBSDF::getZeroVectorVector(size_t size1, size_t size2) - { - std::vector> result(size1); - for(auto & val : result) - { - for(size_t i = 0u; i < size2; ++i) - { - val.push_back(0); - } - } - - return result; - } - std::vector & CMultiPaneBSDF::Abs(const double minLambda, const double maxLambda, const Side t_Side, diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp index 670cc1bf..27fd94ca 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp @@ -263,12 +263,10 @@ namespace MultiLayerOptics void calcHemisphericalAbs(FenestrationCommon::Side t_Side); - [[nodiscard]] std::vector getCommonWavelengths( + [[nodiscard]] std::vector getCommonWavelengthsFromLayers( const std::vector> & t_Layer) const; - static std::vector> getZeroVectorVector(size_t size1, size_t size2); - - double integrateBSDFAbsorptance(const std::vector & lambda, const std::vector & absorptance); + static double integrateBSDFAbsorptance(const std::vector & lambda, const std::vector & absorptance); CEquivalentBSDFLayer m_EquivalentLayer; diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.cpp b/src/SingleLayerOptics/src/BSDFIntegrator.cpp index 4d967271..8212c1df 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.cpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.cpp @@ -10,7 +10,7 @@ namespace SingleLayerOptics BSDFIntegrator::BSDFIntegrator(const BSDFDirections & t_Directions) : m_Directions(t_Directions), m_DimMatrices(m_Directions.size()), - m_HemisphericalCalculated(false), + m_DirectHemisphericalCalculated(false), m_DiffuseDiffuseCalculated(false) { for(auto t_Side : EnumSide()) @@ -18,7 +18,7 @@ namespace SingleLayerOptics for(auto t_Property : EnumPropertySimple()) { m_Matrix[std::make_pair(t_Side, t_Property)] = SquareMatrix(m_DimMatrices); - m_Hem[std::make_pair(t_Side, t_Property)] = std::vector(m_DimMatrices); + m_DirectHemispherical[std::make_pair(t_Side, t_Property)] = std::vector(m_DimMatrices); } } } @@ -36,23 +36,23 @@ namespace SingleLayerOptics const FenestrationCommon::SquareMatrix & BSDFIntegrator::at(const FenestrationCommon::Side t_Side, - const FenestrationCommon::PropertySimple t_Property) const + const FenestrationCommon::PropertySimple t_Property) const { return m_Matrix.at(std::make_pair(t_Side, t_Property)); } void BSDFIntegrator::setMatrices(const SquareMatrix & t_Tau, - const SquareMatrix & t_Rho, - Side t_Side) + const SquareMatrix & t_Rho, + Side t_Side) { m_Matrix[std::make_pair(t_Side, PropertySimple::T)] = t_Tau; m_Matrix[std::make_pair(t_Side, PropertySimple::R)] = t_Rho; } double BSDFIntegrator::DirDir(const Side t_Side, - const PropertySimple t_Property, - const double t_Theta, - const double t_Phi) const + const PropertySimple t_Property, + const double t_Theta, + const double t_Phi) const { const auto index = m_Directions.getNearestBeamIndex(t_Theta, t_Phi); const auto lambda = m_Directions.lambdaVector()[index]; @@ -61,8 +61,8 @@ namespace SingleLayerOptics } double BSDFIntegrator::DirDir(const Side t_Side, - const PropertySimple t_Property, - const size_t Index) const + const PropertySimple t_Property, + const size_t Index) const { const auto lambda = m_Directions.lambdaVector()[Index]; const auto tau = at(t_Side, t_Property)(Index, Index); @@ -70,10 +70,10 @@ namespace SingleLayerOptics } std::vector BSDFIntegrator::DirHem(const FenestrationCommon::Side t_Side, - const FenestrationCommon::PropertySimple t_Property) + const FenestrationCommon::PropertySimple t_Property) { calcHemispherical(); - return m_Hem.at(std::make_pair(t_Side, t_Property)); + return m_DirectHemispherical.at(std::make_pair(t_Side, t_Property)); } std::vector BSDFIntegrator::Abs(Side t_Side) @@ -83,9 +83,9 @@ namespace SingleLayerOptics } double BSDFIntegrator::DirHem(const Side t_Side, - const PropertySimple t_Property, - const double t_Theta, - const double t_Phi) + const PropertySimple t_Property, + const double t_Theta, + const double t_Phi) { const auto index = m_Directions.getNearestBeamIndex(t_Theta, t_Phi); return DirHem(t_Side, t_Property)[index]; @@ -112,7 +112,7 @@ namespace SingleLayerOptics return m_Directions.lambdaMatrix(); } - double BSDFIntegrator::integrate(SquareMatrix const & t_Matrix) const + double BSDFIntegrator::integrate(const SquareMatrix & t_Matrix) const { using ConstantsData::WCE_PI; double sum = 0; @@ -132,9 +132,10 @@ namespace SingleLayerOptics { for(auto t_Side : EnumSide()) { - for(auto t_Property : EnumPropertySimple()) + for(auto t_PropertySimple : EnumPropertySimple()) { - m_DiffDiff(t_Side, t_Property) = integrate(getMatrix(t_Side, t_Property)); + m_DiffDiff(t_Side, t_PropertySimple) = + integrate(getMatrix(t_Side, t_PropertySimple)); } } m_DiffuseDiffuseCalculated = true; @@ -148,29 +149,28 @@ namespace SingleLayerOptics void BSDFIntegrator::calcHemispherical() { - if(!m_HemisphericalCalculated) + if(!m_DirectHemisphericalCalculated) { for(Side t_Side : EnumSide()) { - for(PropertySimple t_Property : EnumPropertySimple()) + for(PropertySimple t_PropertySimple : EnumPropertySimple()) { - m_Hem[std::make_pair(t_Side, t_Property)] = - m_Directions.lambdaVector() * m_Matrix.at(std::make_pair(t_Side, t_Property)); + m_DirectHemispherical[{t_Side, t_PropertySimple}] = + m_Directions.lambdaVector() * m_Matrix.at({t_Side, t_PropertySimple}); } m_Abs[t_Side] = std::vector(); } - const auto size = m_Hem[std::make_pair(Side::Front, PropertySimple::T)].size(); + const auto size = m_DirectHemispherical[{Side::Front, PropertySimple::T}].size(); for(size_t i = 0; i < size; ++i) { for(Side t_Side : EnumSide()) { - m_Abs.at(t_Side).push_back( - 1.0 - m_Hem.at(std::make_pair(t_Side, PropertySimple::T))[i] - - m_Hem.at(std::make_pair(t_Side, PropertySimple::R))[i]); + m_Abs.at(t_Side).push_back(1.0 - m_DirectHemispherical.at({t_Side, PropertySimple::T})[i] + - m_DirectHemispherical.at({t_Side, PropertySimple::R})[i]); } } - m_HemisphericalCalculated = true; + m_DirectHemisphericalCalculated = true; } } double BSDFIntegrator::AbsDiffDiff(FenestrationCommon::Side t_Side) diff --git a/src/SingleLayerOptics/src/BSDFIntegrator.hpp b/src/SingleLayerOptics/src/BSDFIntegrator.hpp index 840cdcc0..69476626 100644 --- a/src/SingleLayerOptics/src/BSDFIntegrator.hpp +++ b/src/SingleLayerOptics/src/BSDFIntegrator.hpp @@ -59,8 +59,6 @@ namespace SingleLayerOptics [[nodiscard]] double Abs(FenestrationCommon::Side t_Side, double t_Theta, double t_Phi); [[nodiscard]] double Abs(FenestrationCommon::Side t_Side, size_t Index); - // std::shared_ptr< const BSDFDirections > getDirections() const; - [[nodiscard]] double DiffDiff(FenestrationCommon::Side t_Side, FenestrationCommon::PropertySimple t_Property); @@ -86,12 +84,16 @@ namespace SingleLayerOptics std::map, FenestrationCommon::SquareMatrix> m_Matrix; + + //! Direct-Hemispherical transmittance/reflectance (front/back) for each of the incoming directions std::map, std::vector> - m_Hem; + m_DirectHemispherical; + + //! Absorbtances for each incoming direction std::map> m_Abs; - bool m_HemisphericalCalculated; + bool m_DirectHemisphericalCalculated; bool m_DiffuseDiffuseCalculated; FenestrationCommon:: mmap From 070cfdc1c80e09f612f27b3da602aee8d2391e49 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 28 Jul 2022 15:16:29 -0700 Subject: [PATCH 25/81] ISeriesPoint interface removed. --- src/Common/src/Hemispherical2DIntegrator.cpp | 6 +- src/Common/src/IntegratorStrategy.cpp | 97 ++++++------- src/Common/src/IntegratorStrategy.hpp | 21 +-- src/Common/src/MatrixSeries.cpp | 2 +- src/Common/src/Series.cpp | 130 +++++++----------- src/Common/src/Series.hpp | 48 +++---- .../tst/units/SeriesIntegration.unit.cpp | 33 +++-- ...leRectangularCentroidInterpolator.unit.cpp | 7 +- .../SimpleRectangularInterpolator.unit.cpp | 7 +- .../SimpleTrapezoidalAInterpolator.unit.cpp | 7 +- .../SimpleTrapezoidalBInterpolator.unit.cpp | 7 +- .../SimpleTrapezoidalInterpolator.unit.cpp | 7 +- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 2 +- .../src/MultiPaneSpectralSample.cpp | 2 +- .../src/MultiPaneSpecular.cpp | 126 +++++++++-------- .../src/MaterialDescription.cpp | 4 +- .../src/PhotovoltaicSpecularBSDFLayer.cpp | 2 +- .../src/AngularSpectralSample.cpp | 6 +- src/SpectralAveraging/src/NIRRatio.cpp | 4 +- src/SpectralAveraging/src/SpectralSample.cpp | 12 +- 20 files changed, 236 insertions(+), 294 deletions(-) diff --git a/src/Common/src/Hemispherical2DIntegrator.cpp b/src/Common/src/Hemispherical2DIntegrator.cpp index cbe2b299..6a822369 100644 --- a/src/Common/src/Hemispherical2DIntegrator.cpp +++ b/src/Common/src/Hemispherical2DIntegrator.cpp @@ -16,8 +16,8 @@ namespace FenestrationCommon CSeries aResultValues = CSeries(); for(const auto & ser : t_Series) { - auto angle = radians(ser->x()); - auto value = ser->value(); + auto angle = radians(ser.x()); + auto value = ser.value(); auto sinCos = std::sin(angle) * std::cos(angle); aResultValues.addProperty(angle, value * sinCos); } @@ -25,7 +25,7 @@ namespace FenestrationCommon aResultValues.sort(); auto integrated = aResultValues.integrate(t_IntegrationType, normalizationCoefficient); - m_Value = 2 * integrated->sum(); + m_Value = 2 * integrated.sum(); } double CHemispherical2DIntegrator::value() const diff --git a/src/Common/src/IntegratorStrategy.cpp b/src/Common/src/IntegratorStrategy.cpp index c300ea70..fdb1cfa1 100644 --- a/src/Common/src/IntegratorStrategy.cpp +++ b/src/Common/src/IntegratorStrategy.cpp @@ -10,59 +10,56 @@ namespace FenestrationCommon return x2 - x1; } - std::unique_ptr - CIntegratorRectangular::integrate(const std::vector> & t_Series, + CSeries + CIntegratorRectangular::integrate(const std::vector & t_Series, double normalizationCoeff) { - auto newProperties = wce::make_unique(); + CSeries newProperties; for(auto i = 1u; i < t_Series.size(); ++i) { - const auto w1 = t_Series[i - 1]->x(); - const auto w2 = t_Series[i]->x(); - const auto y1 = t_Series[i - 1]->value(); - // const auto y2 = t_Series[ i ]->value(); + const auto w1 = t_Series[i - 1].x(); + const auto w2 = t_Series[i].x(); + const auto y1 = t_Series[i - 1].value(); const auto deltaX = dX(w1, w2); const auto value = y1 * deltaX; - newProperties->addProperty(w1, value / normalizationCoeff); + newProperties.addProperty(w1, value / normalizationCoeff); } return newProperties; } - std::unique_ptr CIntegratorRectangularCentroid::integrate( - const std::vector> & t_Series, double normalizationCoeff) + CSeries CIntegratorRectangularCentroid::integrate(const std::vector & t_Series, double normalizationCoeff) { - auto newProperties = wce::make_unique(); + CSeries newProperties; for(auto i = 1u; i < t_Series.size(); ++i) { - const auto w1 = t_Series[i - 1]->x(); - const auto w2 = t_Series[i]->x(); - const auto y1 = t_Series[i - 1]->value(); - // const auto y2 = t_Series[ i ]->value(); + const auto w1 = t_Series[i - 1].x(); + const auto w2 = t_Series[i].x(); + const auto y1 = t_Series[i - 1].value(); const auto diffX = (w2 - w1) / 2; const auto deltaX = dX(w1 - diffX, w2 - diffX); const auto value = y1 * deltaX; - newProperties->addProperty(w1, value / normalizationCoeff); + newProperties.addProperty(w1, value / normalizationCoeff); } return newProperties; } - std::unique_ptr - CIntegratorTrapezoidal::integrate(const std::vector> & t_Series, + CSeries + CIntegratorTrapezoidal::integrate(const std::vector & t_Series, double normalizationCoeff) { - auto newProperties = wce::make_unique(); + CSeries newProperties; for(auto i = 1u; i < t_Series.size(); ++i) { - const auto w1 = t_Series[i - 1]->x(); - const auto w2 = t_Series[i]->x(); - const auto y1 = t_Series[i - 1]->value(); - const auto y2 = t_Series[i]->value(); + const auto w1 = t_Series[i - 1].x(); + const auto w2 = t_Series[i].x(); + const auto y1 = t_Series[i - 1].value(); + const auto y2 = t_Series[i].value(); const auto deltaX = dX(w1, w2); const auto yCenter = (y1 + y2) / 2; const auto value = yCenter * deltaX; - newProperties->addProperty(w1, value / normalizationCoeff); + newProperties.addProperty(w1, value / normalizationCoeff); } return newProperties; @@ -71,17 +68,16 @@ namespace FenestrationCommon /// TrapezoidalA integration insert additional items before and after first and /// last wavelenghts Since WCE is working strictly within wavelengths, /// contributions will be added to first and last segment - std::unique_ptr CIntegratorTrapezoidalA::integrate( - const std::vector> & t_Series, double normalizationCoeff) + CSeries CIntegratorTrapezoidalA::integrate(const std::vector & t_Series, double normalizationCoeff) { - auto newProperties = wce::make_unique(); + CSeries newProperties; for(auto i = 1u; i < t_Series.size(); ++i) { - const auto w1 = t_Series[i - 1]->x(); - const auto w2 = t_Series[i]->x(); - const auto y1 = t_Series[i - 1]->value(); - const auto y2 = t_Series[i]->value(); + const auto w1 = t_Series[i - 1].x(); + const auto w2 = t_Series[i].x(); + const auto y1 = t_Series[i - 1].value(); + const auto y2 = t_Series[i].value(); const auto deltaX = dX(w1, w2); const auto yCenter = (y1 + y2) / 2; auto value = yCenter * deltaX; @@ -93,23 +89,22 @@ namespace FenestrationCommon { value += (y2 / 2) * deltaX; } - newProperties->addProperty(w1, value / normalizationCoeff); + newProperties.addProperty(w1, value / normalizationCoeff); } return newProperties; } - std::unique_ptr CIntegratorTrapezoidalB::integrate( - const std::vector> & t_Series, double normalizationCoeff) + CSeries CIntegratorTrapezoidalB::integrate(const std::vector & t_Series, double normalizationCoeff) { - auto newProperties = wce::make_unique(); + CSeries newProperties; for(auto i = 1u; i < t_Series.size(); ++i) { - const auto w1 = t_Series[i - 1]->x(); - const auto w2 = t_Series[i]->x(); - const auto y1 = t_Series[i - 1]->value(); - const auto y2 = t_Series[i]->value(); + const auto w1 = t_Series[i - 1].x(); + const auto w2 = t_Series[i].x(); + const auto y1 = t_Series[i - 1].value(); + const auto y2 = t_Series[i].value(); const auto deltaX = dX(w1, w2); const auto yCenter = (y1 + y2) / 2; auto value = yCenter * deltaX; @@ -117,25 +112,23 @@ namespace FenestrationCommon { value += ((y1 + y2) / 4) * deltaX; } - newProperties->addProperty(w1, value / normalizationCoeff); + newProperties.addProperty(w1, value / normalizationCoeff); } return newProperties; } - std::unique_ptr - CIntegratorPreWeighted::integrate(const std::vector> & t_Series, + CSeries + CIntegratorPreWeighted::integrate(const std::vector & t_Series, double normalizationCoeff) { - auto newProperties = wce::make_unique(); + CSeries newProperties; for(auto i = 0u; i < t_Series.size(); ++i) { - /// const auto w1 = t_Series[ i ]->x(); - const auto y1 = t_Series[i]->value(); + const auto y1 = t_Series[i].value(); - /// newProperties->addProperty( w1, w1 * y1 / normalizationCoeff ); - newProperties->addProperty(1, y1 / normalizationCoeff); + newProperties.addProperty(1, y1 / normalizationCoeff); } return newProperties; @@ -148,19 +141,19 @@ namespace FenestrationCommon switch(t_IntegratorType) { case IntegrationType::Rectangular: - aStrategy = wce::make_unique(); + aStrategy = std::make_unique(); break; case IntegrationType::RectangularCentroid: - aStrategy = wce::make_unique(); + aStrategy = std::make_unique(); break; case IntegrationType::Trapezoidal: - aStrategy = wce::make_unique(); + aStrategy = std::make_unique(); break; case IntegrationType::TrapezoidalA: - aStrategy = wce::make_unique(); + aStrategy = std::make_unique(); break; case IntegrationType::TrapezoidalB: - aStrategy = wce::make_unique(); + aStrategy = std::make_unique(); break; case IntegrationType::PreWeighted: aStrategy = wce::make_unique(); diff --git a/src/Common/src/IntegratorStrategy.hpp b/src/Common/src/IntegratorStrategy.hpp index c7d78332..501ddce4 100644 --- a/src/Common/src/IntegratorStrategy.hpp +++ b/src/Common/src/IntegratorStrategy.hpp @@ -29,8 +29,7 @@ namespace FenestrationCommon // virtual double integrate( double const x1, double const x2, double const // y1, double const y2 ) = 0; - virtual std::unique_ptr - integrate(const std::vector> & t_Series, + virtual CSeries integrate(const std::vector & t_Series, double normalizationCoeff = 1) = 0; protected: @@ -40,48 +39,42 @@ namespace FenestrationCommon class CIntegratorRectangular : public IIntegratorStrategy { public: - std::unique_ptr - integrate(const std::vector> & t_Series, + CSeries integrate(const std::vector & t_Series, double normalizationCoeff) override; }; class CIntegratorRectangularCentroid : public IIntegratorStrategy { public: - std::unique_ptr - integrate(const std::vector> & t_Series, + CSeries integrate(const std::vector & t_Series, double normalizationCoeff) override; }; class CIntegratorTrapezoidal : public IIntegratorStrategy { public: - std::unique_ptr - integrate(const std::vector> & t_Series, + CSeries integrate(const std::vector & t_Series, double normalizationCoeff) override; }; class CIntegratorTrapezoidalA : public IIntegratorStrategy { public: - std::unique_ptr - integrate(const std::vector> & t_Series, + CSeries integrate(const std::vector & t_Series, double normalizationCoeff) override; }; class CIntegratorTrapezoidalB : public IIntegratorStrategy { public: - std::unique_ptr - integrate(const std::vector> & t_Series, + CSeries integrate(const std::vector & t_Series, double normalizationCoeff) override; }; class CIntegratorPreWeighted : public IIntegratorStrategy { public: - std::unique_ptr - integrate(const std::vector> & t_Series, + CSeries integrate(const std::vector & t_Series, double normalizationCoeff) override; }; diff --git a/src/Common/src/MatrixSeries.cpp b/src/Common/src/MatrixSeries.cpp index 411fb58c..e8ea8b15 100644 --- a/src/Common/src/MatrixSeries.cpp +++ b/src/Common/src/MatrixSeries.cpp @@ -114,7 +114,7 @@ namespace FenestrationCommon { for(size_t j = 0; j < m_Matrix[i].size(); ++j) { - m_Matrix[i][j] = *m_Matrix[i][j].integrate(t_Integration, normalizationCoefficient); + m_Matrix[i][j] = m_Matrix[i][j].integrate(t_Integration, normalizationCoefficient); } } } diff --git a/src/Common/src/Series.cpp b/src/Common/src/Series.cpp index c8d267be..4df78336 100644 --- a/src/Common/src/Series.cpp +++ b/src/Common/src/Series.cpp @@ -26,11 +26,6 @@ namespace FenestrationCommon m_Value(t_Value) {} - std::unique_ptr CSeriesPoint::clone() const - { - return wce::make_unique(*this); - } - double CSeriesPoint::x() const { return m_x; @@ -67,7 +62,7 @@ namespace FenestrationCommon m_Series.clear(); for(auto & val : t_values) { - m_Series.push_back(wce::make_unique(val.first, val.second)); + m_Series.emplace_back(val.first, val.second); } } @@ -76,27 +71,18 @@ namespace FenestrationCommon m_Series.clear(); for(const auto & val : t_values) { - m_Series.push_back(wce::make_unique(val.first, val.second)); - } - } - - CSeries::CSeries(CSeries const & t_Series) - { - m_Series.clear(); - for(const auto & val : t_Series.m_Series) - { - m_Series.push_back(val->clone()); + m_Series.emplace_back(val.first, val.second); } } void CSeries::addProperty(const double t_x, const double t_Value) { - m_Series.push_back(wce::make_unique(t_x, t_Value)); + m_Series.emplace_back(t_x, t_Value); } void CSeries::insertToBeginning(double t_x, double t_Value) { - m_Series.insert(m_Series.begin(), wce::make_unique(t_x, t_Value)); + m_Series.insert(m_Series.begin(), {t_x, t_Value}); } void CSeries::setConstantValues(const std::vector & t_Wavelengths, double const t_Value) @@ -108,10 +94,9 @@ namespace FenestrationCommon } } - std::unique_ptr CSeries::integrate(IntegrationType t_IntegrationType, - double normalizationCoefficient) const + CSeries CSeries::integrate(IntegrationType t_IntegrationType, + double normalizationCoefficient) const { - // std::unique_ptr< CSeries > newProperties = wce::make_unique< CSeries >( ); CIntegratorFactory aFactory = CIntegratorFactory(); std::shared_ptr aIntegrator = aFactory.getIntegrator(t_IntegrationType); @@ -119,33 +104,31 @@ namespace FenestrationCommon return aIntegrator->integrate(m_Series, normalizationCoefficient); } - ISeriesPoint * CSeries::findLower(double const t_Wavelength) const + std::optional CSeries::findLower(double const t_Wavelength) const { - ISeriesPoint * currentProperty = nullptr; + std::optional currentProperty; for(auto & spectralProperty : m_Series) { - double aWavelength = spectralProperty->x(); - if(aWavelength > t_Wavelength) + if(spectralProperty.x() > t_Wavelength) { break; } - currentProperty = spectralProperty.get(); + currentProperty = spectralProperty; } return currentProperty; } - ISeriesPoint * CSeries::findUpper(double const t_Wavelength) const + std::optional CSeries::findUpper(double const t_Wavelength) const { - ISeriesPoint * currentProperty = nullptr; + std::optional currentProperty; for(auto & spectralProperty : m_Series) { - double aWavelength = spectralProperty->x(); - if(aWavelength > t_Wavelength) + if(spectralProperty.x() > t_Wavelength) { - currentProperty = spectralProperty.get(); + currentProperty = spectralProperty; break; } } @@ -153,14 +136,14 @@ namespace FenestrationCommon return currentProperty; } - double CSeries::interpolate(ISeriesPoint * t_Lower, - ISeriesPoint * t_Upper, + double CSeries::interpolate(const CSeriesPoint & t_Lower, + const CSeriesPoint & t_Upper, double const t_Wavelength) { - double w1 = t_Lower->x(); - double w2 = t_Upper->x(); - double v1 = t_Lower->value(); - double v2 = t_Upper->value(); + double w1 = t_Lower.x(); + double w2 = t_Upper.x(); + double v1 = t_Lower.value(); + double v2 = t_Upper.value(); double vx = 0; if(w2 != w1) { @@ -180,25 +163,26 @@ namespace FenestrationCommon if(size() != 0) { - ISeriesPoint * lower = nullptr; - ISeriesPoint * upper = nullptr; + std::optional lower; + std::optional upper; for(double wavelength : t_Wavelengths) { lower = findLower(wavelength); upper = findUpper(wavelength); - if(lower == nullptr) + if(!lower.has_value()) { lower = upper; } - if(upper == nullptr) + if(!upper.has_value()) { upper = lower; } - newProperties.addProperty(wavelength, interpolate(lower, upper, wavelength)); + newProperties.addProperty(wavelength, + interpolate(lower.value(), upper.value(), wavelength)); } } @@ -215,9 +199,9 @@ namespace FenestrationCommon for(size_t i = 0; i < minSize; ++i) { - double value = m_Series[i]->value() * other.m_Series[i]->value(); - double wv = m_Series[i]->x(); - double testWv = other.m_Series[i]->x(); + double value = m_Series[i].value() * other.m_Series[i].value(); + double wv = m_Series[i].x(); + double testWv = other.m_Series[i].x(); if(std::abs(wv - testWv) > WAVELENGTHTOLERANCE) { @@ -239,9 +223,9 @@ namespace FenestrationCommon for(size_t i = 0; i < minSize; ++i) { - double value = m_Series[i]->value() - t_Series.m_Series[i]->value(); - double wv = m_Series[i]->x(); - double testWv = t_Series.m_Series[i]->x(); + double value = m_Series[i].value() - t_Series.m_Series[i].value(); + double wv = m_Series[i].x(); + double testWv = t_Series.m_Series[i].x(); if(std::abs(wv - testWv) > WAVELENGTHTOLERANCE) { @@ -261,8 +245,8 @@ namespace FenestrationCommon for(const auto & ot : other) { - double value = val - ot->value(); - double wv = ot->x(); + double value = val - ot.value(); + double wv = ot.x(); newProperties.addProperty(wv, value); } @@ -279,9 +263,9 @@ namespace FenestrationCommon for(size_t i = 0; i < minSize; ++i) { - double value = m_Series[i]->value() + other.m_Series[i]->value(); - double wv = m_Series[i]->x(); - double testWv = other.m_Series[i]->x(); + double value = m_Series[i].value() + other.m_Series[i].value(); + double wv = m_Series[i].x(); + double testWv = other.m_Series[i].x(); if(std::abs(wv - testWv) > WAVELENGTHTOLERANCE) { @@ -300,7 +284,7 @@ namespace FenestrationCommon std::vector aArray; for(auto & spectralProperty : m_Series) { - aArray.push_back(spectralProperty->x()); + aArray.push_back(spectralProperty.x()); } return aArray; @@ -312,7 +296,7 @@ namespace FenestrationCommon double total = 0; for(auto & aPoint : m_Series) { - double wavelength = aPoint->x(); + double wavelength = aPoint.x(); // Last point must be excluded because of ranges. Each wavelength represent range from // wavelength one to wavelength two. Summing value of the last wavelength in array would // be wrong because it would include one additional range after the end of spectrum. For @@ -321,7 +305,7 @@ namespace FenestrationCommon if(((wavelength >= (minLambda - TOLERANCE) && wavelength < (maxLambda - TOLERANCE)) || (minLambda == 0 && maxLambda == 0))) { - total += aPoint->value(); + total += aPoint.value(); } } return total; @@ -329,18 +313,18 @@ namespace FenestrationCommon void CSeries::sort() { - std::sort(m_Series.begin(), - m_Series.end(), - [](std::unique_ptr const & l, - std::unique_ptr const & r) -> bool { return l->x() < r->x(); }); + std::sort( + m_Series.begin(), + m_Series.end(), + [](CSeriesPoint const & l, CSeriesPoint const & r) -> bool { return l.x() < r.x(); }); } - std::vector>::const_iterator CSeries::begin() const + std::vector::const_iterator CSeries::begin() const { return m_Series.cbegin(); } - std::vector>::const_iterator CSeries::end() const + std::vector::const_iterator CSeries::end() const { return m_Series.cend(); } @@ -350,23 +334,13 @@ namespace FenestrationCommon return m_Series.size(); } - CSeries & CSeries::operator=(CSeries const & t_Series) - { - m_Series.clear(); - for(std::unique_ptr const & val : t_Series.m_Series) - { - m_Series.push_back(val->clone()); - } - return *this; - } - - ISeriesPoint & CSeries::operator[](size_t Index) const + const CSeriesPoint & CSeries::operator[](size_t Index) const { if(Index >= m_Series.size()) { throw std::out_of_range("Index out of range."); } - return *m_Series[Index]; + return m_Series[Index]; } void CSeries::clear() @@ -376,13 +350,13 @@ namespace FenestrationCommon void CSeries::cutExtraData(double minWavelength, double maxWavelength) { - std::vector> result; + std::vector result; const auto eps = 1e-8; for(const auto & val : m_Series) { - if(val->x() > (minWavelength - eps) && val->x() < (maxWavelength + eps)) + if(val.x() > (minWavelength - eps) && val.x() < (maxWavelength + eps)) { - result.push_back(val->clone()); + result.push_back(val); } } @@ -390,7 +364,7 @@ namespace FenestrationCommon for(const auto & val : result) { - m_Series.push_back(val->clone()); + m_Series.push_back(val); } } diff --git a/src/Common/src/Series.hpp b/src/Common/src/Series.hpp index 09a721dd..d56fe652 100644 --- a/src/Common/src/Series.hpp +++ b/src/Common/src/Series.hpp @@ -3,33 +3,19 @@ #include #include +#include namespace FenestrationCommon -{ - // Interface definition for any spectral property. This can be any property that is depending on - // wavelength (solar intensity, reflectance, transmittance, etc) - class ISeriesPoint - { - public: - virtual ~ISeriesPoint() = default; - - virtual double x() const = 0; - virtual double value() const = 0; - virtual void value(double t_Value) = 0; - virtual std::unique_ptr clone() const = 0; - }; - - // Implementation of spectral property interface - class CSeriesPoint : public ISeriesPoint +{// Implementation of spectral property interface + class CSeriesPoint { public: CSeriesPoint(); CSeriesPoint(CSeriesPoint const & t_SeriesPoint); CSeriesPoint(double t_Wavelength, double t_Value); - std::unique_ptr clone() const override; - double x() const override; - double value() const override; - void value(double const t_Value) override; + [[nodiscard]] double x() const; + [[nodiscard]] double value() const; + void value(double const t_Value); CSeriesPoint & operator=(const CSeriesPoint & t_Point); bool operator<(const CSeriesPoint & t_Point) const; @@ -51,14 +37,14 @@ namespace FenestrationCommon explicit CSeries(const std::vector> & t_values); explicit CSeries(const std::initializer_list> & t_values); - CSeries(CSeries const & t_Series); + CSeries(const CSeries & t_Series) = default; void addProperty(double t_x, double t_Value); void insertToBeginning(double t_x, double t_Value); // Create wavelength array with identical values over entire wavelength spectrum void setConstantValues(const std::vector & t_x, double const t_Value); - std::unique_ptr integrate(IntegrationType t_IntegrationType, + CSeries integrate(IntegrationType t_IntegrationType, double normalizationCoefficient = 1) const; CSeries interpolate(const std::vector & t_Wavelengths) const; @@ -92,23 +78,23 @@ namespace FenestrationCommon // Sort series by x values in ascending order void sort(); - std::vector>::const_iterator begin() const; - std::vector>::const_iterator end() const; - size_t size() const; + [[nodiscard]] std::vector::const_iterator begin() const; + [[nodiscard]] std::vector::const_iterator end() const; + [[nodiscard]] size_t size() const; - CSeries & operator=(CSeries const & t_Series); - ISeriesPoint & operator[](size_t Index) const; + CSeries & operator=(const CSeries & t_Series) = default; + const CSeriesPoint & operator[](size_t Index) const; void clear(); void cutExtraData(double minWavelength, double maxWavelength); private: - ISeriesPoint * findLower(double t_x) const; - ISeriesPoint * findUpper(double t_x) const; - static double interpolate(ISeriesPoint * t_Lower, ISeriesPoint * t_Upper, double t_x); + [[nodiscard]] std::optional findLower(double t_x) const; + [[nodiscard]] std::optional findUpper(double t_x) const; + static double interpolate(const CSeriesPoint& t_Lower, const CSeriesPoint& t_Upper, const double t_Wavelength); - std::vector> m_Series; + std::vector m_Series; }; CSeries operator-(const double val, const CSeries & other); diff --git a/src/Common/tst/units/SeriesIntegration.unit.cpp b/src/Common/tst/units/SeriesIntegration.unit.cpp index 8615b9f1..89e069da 100644 --- a/src/Common/tst/units/SeriesIntegration.unit.cpp +++ b/src/Common/tst/units/SeriesIntegration.unit.cpp @@ -51,19 +51,18 @@ TEST_F(TestSeriesIntegration, TestRectangular) auto & aSpectralProperties = *getProperty(); - std::shared_ptr aIntegratedProperties = - aSpectralProperties.integrate(IntegrationType::Rectangular); + auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::Rectangular); std::vector correctResults = {0.0027555, 0.0027595, 0.0027615, 0.0027645, 0.0027715, 0.0027760, 0.0027895, 0.0028130, 0.0028495, 0.0028945, 0.0029420, 0.0029745, 0.0029855, 0.0029730, 0.0029425, 0.0028920, 0.0028330, 0.0027735, 0.0027285, 0.0027125}; - EXPECT_EQ(aIntegratedProperties->size(), correctResults.size()); + EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); - for(size_t i = 0; i < aIntegratedProperties->size(); ++i) + for(size_t i = 0; i < aIntegratedProperties.size(); ++i) { - EXPECT_NEAR(correctResults[i], (*aIntegratedProperties)[i].value(), 1e-6); + EXPECT_NEAR(correctResults[i], aIntegratedProperties[i].value(), 1e-6); } } @@ -73,7 +72,7 @@ TEST_F(TestSeriesIntegration, TestTrapezoidal) auto & aSpectralProperties = *getProperty(); - std::shared_ptr aIntegratedProperties = + auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::Trapezoidal); std::vector correctResults{0.00275750, 0.00276050, 0.00276300, 0.00276800, 0.00277375, @@ -81,11 +80,11 @@ TEST_F(TestSeriesIntegration, TestTrapezoidal) 0.00295825, 0.00298000, 0.00297925, 0.00295775, 0.00291725, 0.00286250, 0.00280325, 0.00275100, 0.00272050, 0.00271500}; - EXPECT_EQ(aIntegratedProperties->size(), correctResults.size()); + EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); - for(size_t i = 0; i < aIntegratedProperties->size(); ++i) + for(size_t i = 0; i < aIntegratedProperties.size(); ++i) { - EXPECT_NEAR(correctResults[i], (*aIntegratedProperties)[i].value(), 1e-6); + EXPECT_NEAR(correctResults[i], aIntegratedProperties[i].value(), 1e-6); } } @@ -95,7 +94,7 @@ TEST_F(TestSeriesIntegration, TestRectangularCentroid) auto & aSpectralProperties = *getProperty(); - std::shared_ptr aIntegratedProperties = + auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::RectangularCentroid, 2); std::vector correctResults{0.0013777, 0.0013798, 0.0013807, 0.0013823, 0.0013857, @@ -103,11 +102,11 @@ TEST_F(TestSeriesIntegration, TestRectangularCentroid) 0.0014710, 0.0014873, 0.0014927, 0.0014865, 0.0014713, 0.0014460, 0.0014165, 0.0013867, 0.0013643, 0.0013562}; - EXPECT_EQ(aIntegratedProperties->size(), correctResults.size()); + EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); - for(size_t i = 0; i < aIntegratedProperties->size(); ++i) + for(size_t i = 0; i < aIntegratedProperties.size(); ++i) { - EXPECT_NEAR(correctResults[i], (*aIntegratedProperties)[i].value(), 1e-6); + EXPECT_NEAR(correctResults[i], aIntegratedProperties[i].value(), 1e-6); } } @@ -117,7 +116,7 @@ TEST_F(TestSeriesIntegration, TestPreWeighted) auto & aSpectralProperties = *getProperty(); - std::shared_ptr aIntegratedProperties = + auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::PreWeighted, 2); std::vector correctResults{0.275550, 0.275950, 0.276150, 0.276450, 0.277150, 0.277600, @@ -125,10 +124,10 @@ TEST_F(TestSeriesIntegration, TestPreWeighted) 0.298550, 0.297300, 0.294250, 0.289200, 0.283300, 0.277350, 0.272850, 0.271250, 0.271750}; - EXPECT_EQ(aIntegratedProperties->size(), correctResults.size()); + EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); - for(size_t i = 0; i < aIntegratedProperties->size(); ++i) + for(size_t i = 0; i < aIntegratedProperties.size(); ++i) { - EXPECT_NEAR(correctResults[i], (*aIntegratedProperties)[i].value(), 1e-6); + EXPECT_NEAR(correctResults[i], aIntegratedProperties[i].value(), 1e-6); } } diff --git a/src/Common/tst/units/SimpleRectangularCentroidInterpolator.unit.cpp b/src/Common/tst/units/SimpleRectangularCentroidInterpolator.unit.cpp index 247b1fab..4c2ee2a3 100644 --- a/src/Common/tst/units/SimpleRectangularCentroidInterpolator.unit.cpp +++ b/src/Common/tst/units/SimpleRectangularCentroidInterpolator.unit.cpp @@ -31,12 +31,9 @@ TEST_F(TestSimpleRectangularCentroidIntegration, TestRectangularCentorid) auto aIntegrator = getIntegrator(); - std::vector> input; - input.push_back(wce::make_unique(10, 20)); - input.push_back(wce::make_unique(15, 30)); - input.push_back(wce::make_unique(20, 40)); + std::vector input{{10, 20}, {15, 30}, {20, 40}}; - const auto series = *aIntegrator->integrate(input); + const auto series = aIntegrator->integrate(input); CSeries correctValues{{10, 100}, {15, 150}}; diff --git a/src/Common/tst/units/SimpleRectangularInterpolator.unit.cpp b/src/Common/tst/units/SimpleRectangularInterpolator.unit.cpp index a0a2d409..01f4ea17 100644 --- a/src/Common/tst/units/SimpleRectangularInterpolator.unit.cpp +++ b/src/Common/tst/units/SimpleRectangularInterpolator.unit.cpp @@ -31,12 +31,9 @@ TEST_F(TestSimpleRectangularIntegration, TestRectangular) auto aIntegrator = getIntegrator(); - std::vector> input; - input.push_back(wce::make_unique(10, 20)); - input.push_back(wce::make_unique(15, 30)); - input.push_back(wce::make_unique(20, 40)); + std::vector input{{10, 20}, {15, 30}, {20, 40}}; - const auto series = *aIntegrator->integrate(input); + const auto series = aIntegrator->integrate(input); CSeries correctValues{{10, 100}, {15, 150}}; diff --git a/src/Common/tst/units/SimpleTrapezoidalAInterpolator.unit.cpp b/src/Common/tst/units/SimpleTrapezoidalAInterpolator.unit.cpp index 493eeb6f..fc57b72a 100644 --- a/src/Common/tst/units/SimpleTrapezoidalAInterpolator.unit.cpp +++ b/src/Common/tst/units/SimpleTrapezoidalAInterpolator.unit.cpp @@ -31,12 +31,9 @@ TEST_F(TestSimpleTrapezoidalBIntegration, TestTrapezoidalB) auto aIntegrator = getIntegrator(); - std::vector> input; - input.push_back(wce::make_unique(10, 20)); - input.push_back(wce::make_unique(15, 30)); - input.push_back(wce::make_unique(20, 40)); + std::vector input{{10, 20}, {15, 30}, {20, 40}}; - const auto series = *aIntegrator->integrate(input); + const auto series = aIntegrator->integrate(input); CSeries correctValues{{10, 187.5}, {15, 262.5}}; diff --git a/src/Common/tst/units/SimpleTrapezoidalBInterpolator.unit.cpp b/src/Common/tst/units/SimpleTrapezoidalBInterpolator.unit.cpp index f94505c6..476fbe06 100644 --- a/src/Common/tst/units/SimpleTrapezoidalBInterpolator.unit.cpp +++ b/src/Common/tst/units/SimpleTrapezoidalBInterpolator.unit.cpp @@ -31,12 +31,9 @@ TEST_F(TestSimpleTrapezoidalAIntegration, TestTrapezoidalA) auto aIntegrator = getIntegrator(); - std::vector> input; - input.push_back(wce::make_unique(10, 20)); - input.push_back(wce::make_unique(15, 30)); - input.push_back(wce::make_unique(20, 40)); + std::vector input{{10, 20}, {15, 30}, {20, 40}}; - const auto series = *aIntegrator->integrate(input); + const auto series = aIntegrator->integrate(input); CSeries correctValues{{10, 175}, {15, 275}}; diff --git a/src/Common/tst/units/SimpleTrapezoidalInterpolator.unit.cpp b/src/Common/tst/units/SimpleTrapezoidalInterpolator.unit.cpp index 90017774..4bd42ed4 100644 --- a/src/Common/tst/units/SimpleTrapezoidalInterpolator.unit.cpp +++ b/src/Common/tst/units/SimpleTrapezoidalInterpolator.unit.cpp @@ -31,12 +31,9 @@ TEST_F(TestSimpleTrapezoidalIntegration, TestTrapezoidal) auto aIntegrator = getIntegrator(); - std::vector> input; - input.push_back(wce::make_unique(10, 20)); - input.push_back(wce::make_unique(15, 30)); - input.push_back(wce::make_unique(20, 40)); + std::vector input{{10, 20}, {15, 30}, {20, 40}}; - const auto series = *aIntegrator->integrate(input); + const auto series = aIntegrator->integrate(input); CSeries correctValues{{10, 125}, {15, 175}}; diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index e9237071..da9838e4 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -171,7 +171,7 @@ namespace MultiLayerOptics // using aSpectra = aSpectra.interpolate(m_EquivalentLayer.getCommonWavelengths()); - CSeries iTotalSolar = *aSpectra.integrate(m_Integrator, m_NormalizationCoefficient); + CSeries iTotalSolar = aSpectra.integrate(m_Integrator, m_NormalizationCoefficient); m_IncomingSolar.push_back(iTotalSolar.sum(minLambda, maxLambda)); } diff --git a/src/MultiLayerOptics/src/MultiPaneSpectralSample.cpp b/src/MultiLayerOptics/src/MultiPaneSpectralSample.cpp index c006ab9c..3f29ff1f 100644 --- a/src/MultiLayerOptics/src/MultiPaneSpectralSample.cpp +++ b/src/MultiLayerOptics/src/MultiPaneSpectralSample.cpp @@ -83,7 +83,7 @@ namespace MultiLayerOptics aAbs = aAbs.interpolate(m_Wavelengths); } aAbs = aAbs * m_IncomingSource; - aAbs = *aAbs.integrate(m_IntegrationType, m_NormalizationCoefficient); + aAbs = aAbs.integrate(m_IntegrationType, m_NormalizationCoefficient); m_AbsorbedLayersSource.at(side).push_back(aAbs); } diff --git a/src/MultiLayerOptics/src/MultiPaneSpecular.cpp b/src/MultiLayerOptics/src/MultiPaneSpecular.cpp index 2969d1c6..6c7f9dc6 100644 --- a/src/MultiLayerOptics/src/MultiPaneSpecular.cpp +++ b/src/MultiLayerOptics/src/MultiPaneSpecular.cpp @@ -17,7 +17,9 @@ namespace MultiLayerOptics //////////////////////////////////////////////////////////////////////////////////////////// CEquivalentLayerSingleComponentMWAngle::CEquivalentLayerSingleComponentMWAngle( CEquivalentLayerSingleComponentMW t_Layer, CAbsorptancesMultiPane t_Abs, double t_Angle) : - m_Layer(std::move(t_Layer)), m_Abs(std::move(t_Abs)), m_Angle(t_Angle) + m_Layer(std::move(t_Layer)), + m_Abs(std::move(t_Abs)), + m_Angle(t_Angle) {} double CEquivalentLayerSingleComponentMWAngle::angle() const @@ -58,7 +60,9 @@ namespace MultiLayerOptics const std::vector> & layers, const CSeries & t_SolarRadiation, const CSeries & t_DetectorData) : - m_Layers(layers), m_SolarRadiation(t_SolarRadiation), m_DetectorData(t_DetectorData) + m_Layers(layers), + m_SolarRadiation(t_SolarRadiation), + m_DetectorData(t_DetectorData) { CCommonWavelengths aCommonWL; for(auto & layer : m_Layers) @@ -86,7 +90,8 @@ namespace MultiLayerOptics CMultiPaneSpecular::CMultiPaneSpecular(const std::vector & t_CommonWavelength, const CSeries & t_SolarRadiation, const std::shared_ptr & t_Layer) : - m_CommonWavelengths(t_CommonWavelength), m_SolarRadiation(t_SolarRadiation) + m_CommonWavelengths(t_CommonWavelength), + m_SolarRadiation(t_SolarRadiation) { m_SolarRadiation = m_SolarRadiation.interpolate(m_CommonWavelengths); addLayer(t_Layer); @@ -189,10 +194,10 @@ namespace MultiLayerOptics // TODO: Check detector data here and multiply with it if necessary - const double totalProperty = iIntegrated->sum(minLambda, maxLambda); + const double totalProperty = iIntegrated.sum(minLambda, maxLambda); double totalSolar = solarRadiation.integrate(t_IntegrationType, normalizationCoefficient) - ->sum(minLambda, maxLambda); + .sum(minLambda, maxLambda); assert(totalSolar > 0); @@ -252,19 +257,18 @@ namespace MultiLayerOptics else if(scattering == ScatteringSimple::Diffuse) { result = AbsHemispherical( - index, {0, 10, 20, 30, 40, 50, 60, 70, 80, 90}, minLambda, maxLambda, side); + index, {0, 10, 20, 30, 40, 50, 60, 70, 80, 90}, minLambda, maxLambda, side); } return result; } - double - CMultiPaneSpecular::getAbsorptanceLayerHeat(double minLambda, - double maxLambda, - size_t index, - Side side, - ScatteringSimple scattering, - double theta, - double) + double CMultiPaneSpecular::getAbsorptanceLayerHeat(double minLambda, + double maxLambda, + size_t index, + Side side, + ScatteringSimple scattering, + double theta, + double) { auto result(0.0); if(scattering == ScatteringSimple::Direct) @@ -274,19 +278,18 @@ namespace MultiLayerOptics else if(scattering == ScatteringSimple::Diffuse) { result = AbsHemisphericalHeat( - index, {0, 10, 20, 30, 40, 50, 60, 70, 80, 90}, minLambda, maxLambda, side); + index, {0, 10, 20, 30, 40, 50, 60, 70, 80, 90}, minLambda, maxLambda, side); } return result; } - double CMultiPaneSpecular::getAbsorptanceLayerElectricity( - double minLambda, - double maxLambda, - size_t index, - Side side, - ScatteringSimple scattering, - double theta, - double) + double CMultiPaneSpecular::getAbsorptanceLayerElectricity(double minLambda, + double maxLambda, + size_t index, + Side side, + ScatteringSimple scattering, + double theta, + double) { auto result(0.0); if(scattering == ScatteringSimple::Direct) @@ -296,7 +299,7 @@ namespace MultiLayerOptics else if(scattering == ScatteringSimple::Diffuse) { result = AbsHemisphericalElectricity( - index, {0, 10, 20, 30, 40, 50, 60, 70, 80, 90}, minLambda, maxLambda, side); + index, {0, 10, 20, 30, 40, 50, 60, 70, 80, 90}, minLambda, maxLambda, side); } return result; } @@ -369,9 +372,9 @@ namespace MultiLayerOptics auto iIntegrated = aMult.integrate(t_IntegrationType, normalizationCoefficient); - double totalProperty = iIntegrated->sum(minLambda, maxLambda); + double totalProperty = iIntegrated.sum(minLambda, maxLambda); double totalSolar = m_SolarRadiation.integrate(t_IntegrationType, normalizationCoefficient) - ->sum(minLambda, maxLambda); + .sum(minLambda, maxLambda); assert(totalSolar > 0); @@ -386,12 +389,20 @@ namespace MultiLayerOptics IntegrationType t_IntegrationType, double normalizationCoefficient) { - return Abs( - Index, t_Angle, minLambda, maxLambda, side, t_IntegrationType, + return Abs(Index, + t_Angle, + minLambda, + maxLambda, + side, + t_IntegrationType, normalizationCoefficient) - - AbsElectricity( - Index, t_Angle, minLambda, maxLambda, side, t_IntegrationType, - normalizationCoefficient); + - AbsElectricity(Index, + t_Angle, + minLambda, + maxLambda, + side, + t_IntegrationType, + normalizationCoefficient); } double CMultiPaneSpecular::AbsElectricity(size_t Index, @@ -406,7 +417,7 @@ namespace MultiLayerOptics { const double totalEnergy = m_SolarRadiation.integrate(t_IntegrationType, normalizationCoefficient) - ->sum(minLambda, maxLambda); + .sum(minLambda, maxLambda); CEquivalentLayerSingleComponentMWAngle aAngularProperties = getAngular(t_Angle); auto aLayer = std::dynamic_pointer_cast(m_Layers[Index - 1]); @@ -424,7 +435,7 @@ namespace MultiLayerOptics const auto backJsc = backJscPrime * IPlus; const auto JscIntegratedBack = backJsc.integrate(t_IntegrationType, normalizationCoefficient); - const auto jsc{(JscIntegratedFront->sum() + JscIntegratedBack->sum()) * totalEnergy}; + const auto jsc{(JscIntegratedFront.sum() + JscIntegratedBack.sum()) * totalEnergy}; const auto voc{aLayer->voc(jsc)}; const auto ff{aLayer->ff(jsc)}; @@ -438,19 +449,18 @@ namespace MultiLayerOptics return 0; } - std::vector - CMultiPaneSpecular::Absorptances(double t_Angle, - double minLambda, - double maxLambda, - Side side, - IntegrationType t_IntegrationType, - double normalizationCoefficient) + std::vector CMultiPaneSpecular::Absorptances(double t_Angle, + double minLambda, + double maxLambda, + Side side, + IntegrationType t_IntegrationType, + double normalizationCoefficient) { std::vector res; for(size_t i = 1u; i <= size(); ++i) { - res.push_back( - Abs(i, t_Angle, minLambda, maxLambda, side, t_IntegrationType, normalizationCoefficient)); + res.push_back(Abs( + i, t_Angle, minLambda, maxLambda, side, t_IntegrationType, normalizationCoefficient)); } return res; @@ -478,14 +488,13 @@ namespace MultiLayerOptics return aIntegrator.value(); } - double CMultiPaneSpecular::AbsHemisphericalHeat( - size_t Index, - const std::vector & t_IntegrationAngles, - double minLambda, - double maxLambda, - Side side, - IntegrationType t_IntegrationType, - double normalizationCoefficient) + double CMultiPaneSpecular::AbsHemisphericalHeat(size_t Index, + const std::vector & t_IntegrationAngles, + double minLambda, + double maxLambda, + Side side, + IntegrationType t_IntegrationType, + double normalizationCoefficient) { size_t size = t_IntegrationAngles.size(); std::shared_ptr aAngularProperties = std::make_shared(); @@ -502,20 +511,21 @@ namespace MultiLayerOptics } double CMultiPaneSpecular::AbsHemisphericalElectricity( - size_t Index, - const std::vector & t_IntegrationAngles, - double minLambda, - double maxLambda, - Side side, - IntegrationType t_IntegrationType, - double normalizationCoefficient) + size_t Index, + const std::vector & t_IntegrationAngles, + double minLambda, + double maxLambda, + Side side, + IntegrationType t_IntegrationType, + double normalizationCoefficient) { size_t size = t_IntegrationAngles.size(); std::shared_ptr aAngularProperties = std::make_shared(); for(size_t i = 0; i < size; ++i) { double angle = t_IntegrationAngles[i]; - double aAbs = AbsElectricity(Index, angle, minLambda, maxLambda, side, t_IntegrationType); + double aAbs = + AbsElectricity(Index, angle, minLambda, maxLambda, side, t_IntegrationType); aAngularProperties->addProperty(angle, aAbs); } diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index 41903d2e..550db283 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -722,9 +722,9 @@ namespace SingleLayerOptics for(const auto & aProperty : aProperties) { - if(aProperty->x() >= m_MinLambda && aProperty->x() <= m_MaxLambda) + if(aProperty.x() >= m_MinLambda && aProperty.x() <= m_MaxLambda) { - aValues.push_back(aProperty->value()); + aValues.push_back(aProperty.value()); } } diff --git a/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.cpp b/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.cpp index c9f5bd70..a191bd3f 100644 --- a/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.cpp @@ -36,7 +36,7 @@ namespace SingleLayerOptics for(size_t i = 0u; i < m_BSDFHemisphere.getDirections(BSDFDirection::Incoming).size(); ++i) { - curVal.push_back(jsc->value()); + curVal.push_back(jsc.value()); } result.push_back(curVal); } diff --git a/src/SpectralAveraging/src/AngularSpectralSample.cpp b/src/SpectralAveraging/src/AngularSpectralSample.cpp index a3465a34..4e16ad41 100755 --- a/src/SpectralAveraging/src/AngularSpectralSample.cpp +++ b/src/SpectralAveraging/src/AngularSpectralSample.cpp @@ -177,10 +177,10 @@ namespace SpectralAveraging for(auto & aProperty : aProperties) { - if(aProperty->x() >= (minLambda - ConstantsData::floatErrorTolerance) - && aProperty->x() <= (maxLambda + ConstantsData::floatErrorTolerance)) + if(aProperty.x() >= (minLambda - ConstantsData::floatErrorTolerance) + && aProperty.x() <= (maxLambda + ConstantsData::floatErrorTolerance)) { - aValues.push_back(aProperty->value()); + aValues.push_back(aProperty.value()); } } diff --git a/src/SpectralAveraging/src/NIRRatio.cpp b/src/SpectralAveraging/src/NIRRatio.cpp index 58e256d6..dd81100d 100644 --- a/src/SpectralAveraging/src/NIRRatio.cpp +++ b/src/SpectralAveraging/src/NIRRatio.cpp @@ -13,9 +13,9 @@ namespace SpectralAveraging auto integratedSolar = t_SolarRadiation.integrate(IntegrationType::Trapezoidal); auto aSolarRange = CWavelengthRange(WavelengthRange::Solar); - auto totSolar = integratedSolar->sum(aSolarRange.minLambda(), aSolarRange.maxLambda()); + auto totSolar = integratedSolar.sum(aSolarRange.minLambda(), aSolarRange.maxLambda()); - auto totVisible = integratedSolar->sum(lowLambda, highLambda); + auto totVisible = integratedSolar.sum(lowLambda, highLambda); m_Ratio = totVisible / totSolar; } diff --git a/src/SpectralAveraging/src/SpectralSample.cpp b/src/SpectralAveraging/src/SpectralSample.cpp index 7b5c98e8..0e84e39c 100644 --- a/src/SpectralAveraging/src/SpectralSample.cpp +++ b/src/SpectralAveraging/src/SpectralSample.cpp @@ -203,14 +203,14 @@ namespace SpectralAveraging calculateProperties(); m_IncomingSource = - *m_IncomingSource.integrate(m_IntegrationType, m_NormalizationCoefficient); + m_IncomingSource.integrate(m_IntegrationType, m_NormalizationCoefficient); for(const auto & prop : EnumProperty()) { for(const auto & side : EnumSide()) { m_EnergySource[std::make_pair(prop, side)] = - *m_EnergySource.at(std::make_pair(prop, side)) - .integrate(m_IntegrationType, m_NormalizationCoefficient); + m_EnergySource.at(std::make_pair(prop, side)) + .integrate(m_IntegrationType, m_NormalizationCoefficient); } } @@ -227,7 +227,8 @@ namespace SpectralAveraging const CSeries & t_SourceData, FenestrationCommon::IntegrationType integrationType, double NormalizationCoefficient) : - CSample(t_SourceData, integrationType, NormalizationCoefficient), m_SampleData(t_SampleData) + CSample(t_SourceData, integrationType, NormalizationCoefficient), + m_SampleData(t_SampleData) { if(t_SampleData == nullptr) { @@ -244,7 +245,8 @@ namespace SpectralAveraging } CSpectralSample::CSpectralSample(std::shared_ptr const & t_SampleData) : - CSample(), m_SampleData(t_SampleData) + CSample(), + m_SampleData(t_SampleData) { if(t_SampleData == nullptr) { From a96ea18076c7fafeed988fee507b14e8c5cf927d Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 29 Jul 2022 15:12:03 -0700 Subject: [PATCH 26/81] Major update on how to calculate MultiPaneBSDF. Some old functions still need to be removed in order to prevent user from doing it that way. Also, it is missing the detector data for IR case. --- src/Common/src/IntegratorStrategy.hpp | 18 +- src/Common/src/MatrixSeries.cpp | 17 +- src/Common/src/MatrixSeries.hpp | 14 +- src/Common/src/Series.cpp | 28 +- src/Common/src/Series.hpp | 13 +- .../tst/units/SeriesIntegration.unit.cpp | 117 +++--- .../src/EquivalentBSDFLayer.cpp | 68 +++- .../src/EquivalentBSDFLayer.hpp | 28 +- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 87 ++++- src/MultiLayerOptics/src/MultiPaneBSDF.hpp | 36 +- .../tst/units/MultiPaneBSDF_102.unit.cpp | 50 +-- .../tst/units/MultiPaneBSDF_102_103.unit.cpp | 360 +----------------- src/SingleLayerOptics/src/BSDFLayer.cpp | 1 + .../src/AngularSpectralSample.cpp | 3 + src/SpectralAveraging/src/SpectralSample.cpp | 2 +- 15 files changed, 351 insertions(+), 491 deletions(-) diff --git a/src/Common/src/IntegratorStrategy.hpp b/src/Common/src/IntegratorStrategy.hpp index 501ddce4..7966e429 100644 --- a/src/Common/src/IntegratorStrategy.hpp +++ b/src/Common/src/IntegratorStrategy.hpp @@ -26,11 +26,9 @@ namespace FenestrationCommon { public: virtual ~IIntegratorStrategy() = default; - - // virtual double integrate( double const x1, double const x2, double const - // y1, double const y2 ) = 0; + virtual CSeries integrate(const std::vector & t_Series, - double normalizationCoeff = 1) = 0; + double normalizationCoeff = 1) = 0; protected: double dX(double x1, double x2) const; @@ -40,42 +38,42 @@ namespace FenestrationCommon { public: CSeries integrate(const std::vector & t_Series, - double normalizationCoeff) override; + double normalizationCoeff) override; }; class CIntegratorRectangularCentroid : public IIntegratorStrategy { public: CSeries integrate(const std::vector & t_Series, - double normalizationCoeff) override; + double normalizationCoeff) override; }; class CIntegratorTrapezoidal : public IIntegratorStrategy { public: CSeries integrate(const std::vector & t_Series, - double normalizationCoeff) override; + double normalizationCoeff) override; }; class CIntegratorTrapezoidalA : public IIntegratorStrategy { public: CSeries integrate(const std::vector & t_Series, - double normalizationCoeff) override; + double normalizationCoeff) override; }; class CIntegratorTrapezoidalB : public IIntegratorStrategy { public: CSeries integrate(const std::vector & t_Series, - double normalizationCoeff) override; + double normalizationCoeff) override; }; class CIntegratorPreWeighted : public IIntegratorStrategy { public: CSeries integrate(const std::vector & t_Series, - double normalizationCoeff) override; + double normalizationCoeff) override; }; class CIntegratorFactory diff --git a/src/Common/src/MatrixSeries.cpp b/src/Common/src/MatrixSeries.cpp index e8ea8b15..e294dc7d 100644 --- a/src/Common/src/MatrixSeries.cpp +++ b/src/Common/src/MatrixSeries.cpp @@ -108,13 +108,26 @@ namespace FenestrationCommon } void CMatrixSeries::integrate(const IntegrationType t_Integration, - double normalizationCoefficient) + double normalizationCoefficient, + const std::optional> & integrationPoints) { for(size_t i = 0; i < m_Matrix.size(); ++i) { for(size_t j = 0; j < m_Matrix[i].size(); ++j) { - m_Matrix[i][j] = m_Matrix[i][j].integrate(t_Integration, normalizationCoefficient); + m_Matrix[i][j] = m_Matrix[i][j].integrate( + t_Integration, normalizationCoefficient, integrationPoints); + } + } + } + + void CMatrixSeries::interpolate(const std::vector & t_Wavelengths) + { + for(size_t i = 0; i < m_Matrix.size(); ++i) + { + for(size_t j = 0; j < m_Matrix[i].size(); ++j) + { + m_Matrix[i][j] = m_Matrix[i][j].interpolate(t_Wavelengths); } } } diff --git a/src/Common/src/MatrixSeries.hpp b/src/Common/src/MatrixSeries.hpp index 99663ee4..969a6908 100644 --- a/src/Common/src/MatrixSeries.hpp +++ b/src/Common/src/MatrixSeries.hpp @@ -3,6 +3,7 @@ #include #include +#include namespace FenestrationCommon { @@ -38,11 +39,16 @@ namespace FenestrationCommon std::vector & operator[](const size_t index); - void integrate(const IntegrationType t_Integration, double normalizationCoefficient); + void integrate(const IntegrationType t_Integration, + double normalizationCoefficient, + const std::optional> & integrationPoints); - [[nodiscard]] std::vector> getSums(const double minLambda, - const double maxLambda, - const std::vector & t_ScaleValue) const; + void interpolate(const std::vector & t_Wavelengths); + + [[nodiscard]] std::vector> + getSums(const double minLambda, + const double maxLambda, + const std::vector & t_ScaleValue) const; [[nodiscard]] std::vector> getSums(const double minLambda, const double maxLambda) const; diff --git a/src/Common/src/Series.cpp b/src/Common/src/Series.cpp index 4df78336..49455c87 100644 --- a/src/Common/src/Series.cpp +++ b/src/Common/src/Series.cpp @@ -22,8 +22,7 @@ namespace FenestrationCommon } CSeriesPoint::CSeriesPoint(double t_Wavelength, double t_Value) : - m_x(t_Wavelength), - m_Value(t_Value) + m_x(t_Wavelength), m_Value(t_Value) {} double CSeriesPoint::x() const @@ -95,13 +94,17 @@ namespace FenestrationCommon } CSeries CSeries::integrate(IntegrationType t_IntegrationType, - double normalizationCoefficient) const + double normalizationCoefficient, + const std::optional> & integrationPoints) const { - CIntegratorFactory aFactory = CIntegratorFactory(); - std::shared_ptr aIntegrator = - aFactory.getIntegrator(t_IntegrationType); + const CIntegratorFactory aFactory = CIntegratorFactory(); + const auto aIntegrator = aFactory.getIntegrator(t_IntegrationType); - return aIntegrator->integrate(m_Series, normalizationCoefficient); + const auto series = integrationPoints.has_value() + ? interpolate(integrationPoints.value()).m_Series + : m_Series; + + return aIntegrator->integrate(series, normalizationCoefficient); } std::optional CSeries::findLower(double const t_Wavelength) const @@ -290,6 +293,17 @@ namespace FenestrationCommon return aArray; } + std::vector CSeries::getYArray() const + { + std::vector aArray; + for(auto & spectralProperty : m_Series) + { + aArray.push_back(spectralProperty.value()); + } + + return aArray; + } + double CSeries::sum(double const minLambda, double const maxLambda) const { double const TOLERANCE = 1e-6; // introduced because of rounding error diff --git a/src/Common/src/Series.hpp b/src/Common/src/Series.hpp index d56fe652..aec2a430 100644 --- a/src/Common/src/Series.hpp +++ b/src/Common/src/Series.hpp @@ -6,7 +6,7 @@ #include namespace FenestrationCommon -{// Implementation of spectral property interface +{ // Implementation of spectral property interface class CSeriesPoint { public: @@ -45,7 +45,9 @@ namespace FenestrationCommon void setConstantValues(const std::vector & t_x, double const t_Value); CSeries integrate(IntegrationType t_IntegrationType, - double normalizationCoefficient = 1) const; + double normalizationCoefficient = 1, + const std::optional> & integrationPoints = std::nullopt) const; + CSeries interpolate(const std::vector & t_Wavelengths) const; //! \brief Multiplication of values in spectral properties that have same wavelength. @@ -70,7 +72,8 @@ namespace FenestrationCommon CSeries operator+(const CSeries & other) const; // Return wavelength values for spectral properties. - std::vector getXArray() const; + [[nodiscard]] std::vector getXArray() const; + [[nodiscard]] std::vector getYArray() const; // Sum of all properties between two x values. Default arguments mean all items are sum double sum(double minX = 0, double maxX = 0) const; @@ -92,7 +95,9 @@ namespace FenestrationCommon private: [[nodiscard]] std::optional findLower(double t_x) const; [[nodiscard]] std::optional findUpper(double t_x) const; - static double interpolate(const CSeriesPoint& t_Lower, const CSeriesPoint& t_Upper, const double t_Wavelength); + static double interpolate(const CSeriesPoint & t_Lower, + const CSeriesPoint & t_Upper, + const double t_Wavelength); std::vector m_Series; }; diff --git a/src/Common/tst/units/SeriesIntegration.unit.cpp b/src/Common/tst/units/SeriesIntegration.unit.cpp index 89e069da..a7582180 100644 --- a/src/Common/tst/units/SeriesIntegration.unit.cpp +++ b/src/Common/tst/units/SeriesIntegration.unit.cpp @@ -8,38 +8,36 @@ using namespace FenestrationCommon; class TestSeriesIntegration : public testing::Test { private: - std::shared_ptr m_Series; + CSeries m_Series; protected: void SetUp() override { - m_Series = std::make_shared(); - - m_Series->addProperty(0.500, 0.5511); - m_Series->addProperty(0.505, 0.5519); - m_Series->addProperty(0.510, 0.5523); - m_Series->addProperty(0.515, 0.5529); - m_Series->addProperty(0.520, 0.5543); - m_Series->addProperty(0.525, 0.5552); - m_Series->addProperty(0.530, 0.5579); - m_Series->addProperty(0.535, 0.5626); - m_Series->addProperty(0.540, 0.5699); - m_Series->addProperty(0.545, 0.5789); - m_Series->addProperty(0.550, 0.5884); - m_Series->addProperty(0.555, 0.5949); - m_Series->addProperty(0.560, 0.5971); - m_Series->addProperty(0.565, 0.5946); - m_Series->addProperty(0.570, 0.5885); - m_Series->addProperty(0.575, 0.5784); - m_Series->addProperty(0.580, 0.5666); - m_Series->addProperty(0.585, 0.5547); - m_Series->addProperty(0.590, 0.5457); - m_Series->addProperty(0.595, 0.5425); - m_Series->addProperty(0.600, 0.5435); + m_Series.addProperty(0.500, 0.5511); + m_Series.addProperty(0.505, 0.5519); + m_Series.addProperty(0.510, 0.5523); + m_Series.addProperty(0.515, 0.5529); + m_Series.addProperty(0.520, 0.5543); + m_Series.addProperty(0.525, 0.5552); + m_Series.addProperty(0.530, 0.5579); + m_Series.addProperty(0.535, 0.5626); + m_Series.addProperty(0.540, 0.5699); + m_Series.addProperty(0.545, 0.5789); + m_Series.addProperty(0.550, 0.5884); + m_Series.addProperty(0.555, 0.5949); + m_Series.addProperty(0.560, 0.5971); + m_Series.addProperty(0.565, 0.5946); + m_Series.addProperty(0.570, 0.5885); + m_Series.addProperty(0.575, 0.5784); + m_Series.addProperty(0.580, 0.5666); + m_Series.addProperty(0.585, 0.5547); + m_Series.addProperty(0.590, 0.5457); + m_Series.addProperty(0.595, 0.5425); + m_Series.addProperty(0.600, 0.5435); } public: - std::shared_ptr getProperty() const + [[nodiscard]] CSeries getProperty() const { return m_Series; } @@ -49,14 +47,14 @@ TEST_F(TestSeriesIntegration, TestRectangular) { SCOPED_TRACE("Begin Test: Test rectangular integration over the specturm of data."); - auto & aSpectralProperties = *getProperty(); + const auto & aSpectralProperties = getProperty(); - auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::Rectangular); + const auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::Rectangular); - std::vector correctResults = {0.0027555, 0.0027595, 0.0027615, 0.0027645, 0.0027715, - 0.0027760, 0.0027895, 0.0028130, 0.0028495, 0.0028945, - 0.0029420, 0.0029745, 0.0029855, 0.0029730, 0.0029425, - 0.0028920, 0.0028330, 0.0027735, 0.0027285, 0.0027125}; + const std::vector correctResults = { + 0.0027555, 0.0027595, 0.0027615, 0.0027645, 0.0027715, 0.0027760, 0.0027895, + 0.0028130, 0.0028495, 0.0028945, 0.0029420, 0.0029745, 0.0029855, 0.0029730, + 0.0029425, 0.0028920, 0.0028330, 0.0027735, 0.0027285, 0.0027125}; EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); @@ -70,15 +68,14 @@ TEST_F(TestSeriesIntegration, TestTrapezoidal) { SCOPED_TRACE("Begin Test: Test trapezoidal integration over the specturm of data."); - auto & aSpectralProperties = *getProperty(); + const auto & aSpectralProperties = getProperty(); - auto aIntegratedProperties = - aSpectralProperties.integrate(IntegrationType::Trapezoidal); + const auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::Trapezoidal); - std::vector correctResults{0.00275750, 0.00276050, 0.00276300, 0.00276800, 0.00277375, - 0.00278275, 0.00280125, 0.00283125, 0.00287200, 0.00291825, - 0.00295825, 0.00298000, 0.00297925, 0.00295775, 0.00291725, - 0.00286250, 0.00280325, 0.00275100, 0.00272050, 0.00271500}; + const std::vector correctResults{ + 0.00275750, 0.00276050, 0.00276300, 0.00276800, 0.00277375, 0.00278275, 0.00280125, + 0.00283125, 0.00287200, 0.00291825, 0.00295825, 0.00298000, 0.00297925, 0.00295775, + 0.00291725, 0.00286250, 0.00280325, 0.00275100, 0.00272050, 0.00271500}; EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); @@ -92,15 +89,15 @@ TEST_F(TestSeriesIntegration, TestRectangularCentroid) { SCOPED_TRACE("Begin Test: Test rectangular-centroid integration over the specturm of data."); - auto & aSpectralProperties = *getProperty(); + const auto & aSpectralProperties = getProperty(); - auto aIntegratedProperties = + const auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::RectangularCentroid, 2); - std::vector correctResults{0.0013777, 0.0013798, 0.0013807, 0.0013823, 0.0013857, - 0.0013880, 0.0013947, 0.0014065, 0.0014247, 0.0014473, - 0.0014710, 0.0014873, 0.0014927, 0.0014865, 0.0014713, - 0.0014460, 0.0014165, 0.0013867, 0.0013643, 0.0013562}; + const std::vector correctResults{0.0013777, 0.0013798, 0.0013807, 0.0013823, 0.0013857, + 0.0013880, 0.0013947, 0.0014065, 0.0014247, 0.0014473, + 0.0014710, 0.0014873, 0.0014927, 0.0014865, 0.0014713, + 0.0014460, 0.0014165, 0.0013867, 0.0013643, 0.0013562}; EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); @@ -114,15 +111,15 @@ TEST_F(TestSeriesIntegration, TestPreWeighted) { SCOPED_TRACE("Begin Test: Test pre-weighted integration over the specturm of data."); - auto & aSpectralProperties = *getProperty(); + const auto & aSpectralProperties = getProperty(); - auto aIntegratedProperties = + const auto aIntegratedProperties = aSpectralProperties.integrate(IntegrationType::PreWeighted, 2); - std::vector correctResults{0.275550, 0.275950, 0.276150, 0.276450, 0.277150, 0.277600, - 0.278950, 0.281300, 0.284950, 0.289450, 0.294200, 0.297450, - 0.298550, 0.297300, 0.294250, 0.289200, 0.283300, 0.277350, - 0.272850, 0.271250, 0.271750}; + const std::vector correctResults{ + 0.275550, 0.275950, 0.276150, 0.276450, 0.277150, 0.277600, 0.278950, + 0.281300, 0.284950, 0.289450, 0.294200, 0.297450, 0.298550, 0.297300, + 0.294250, 0.289200, 0.283300, 0.277350, 0.272850, 0.271250, 0.271750}; EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); @@ -131,3 +128,23 @@ TEST_F(TestSeriesIntegration, TestPreWeighted) EXPECT_NEAR(correctResults[i], aIntegratedProperties[i].value(), 1e-6); } } + + +TEST_F(TestSeriesIntegration, IntegrationWithInterpolation) +{ + const auto & aSpectralProperties = getProperty(); + const std::vector integrationPoints{0.5, 0.55, 0.6}; + constexpr auto normalizationCoefficient{1}; + + const auto aIntegratedProperties = aSpectralProperties.integrate( + IntegrationType::Rectangular, normalizationCoefficient, integrationPoints); + + const std::vector correctResults = {0.027555, 0.02942}; + + EXPECT_EQ(aIntegratedProperties.size(), correctResults.size()); + + for(size_t i = 0; i < aIntegratedProperties.size(); ++i) + { + EXPECT_NEAR(correctResults[i], aIntegratedProperties[i].value(), 1e-6); + } +} \ No newline at end of file diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 3b247f6b..58f5cdbe 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -8,16 +8,35 @@ #include "WCECommon.hpp" using namespace FenestrationCommon; -using namespace SingleLayerOptics; namespace MultiLayerOptics { CEquivalentBSDFLayer::CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths) : - m_CombinedLayerWavelengths(t_CommonWavelengths), - m_Calculated(false) + m_CombinedLayerWavelengths(t_CommonWavelengths), m_Calculated(false) {} - void CEquivalentBSDFLayer::addLayer(const std::shared_ptr & t_Layer) + CEquivalentBSDFLayer::CEquivalentBSDFLayer( + std::vector> t_Layer, + const std::optional> & matrixWavelengths) : + m_Layer(std::move(t_Layer)), + m_Lambda(m_Layer[0]->getResults().lambdaMatrix()), + m_CombinedLayerWavelengths(matrixWavelengths.has_value() + ? matrixWavelengths.value() + : unionOfLayerWavelengths(m_Layer)), + m_Calculated(false) + { + for(const auto & layer : m_Layer) + { + if(matrixWavelengths.has_value()) + { + layer->setBandWavelengths(matrixWavelengths.value()); + } + updateWavelengthLayers(*layer); + } + } + + void + CEquivalentBSDFLayer::addLayer(const std::shared_ptr & t_Layer) { t_Layer->setBandWavelengths(m_CombinedLayerWavelengths); if(m_Layer.empty()) @@ -28,7 +47,8 @@ namespace MultiLayerOptics m_Layer.push_back(t_Layer); } - const BSDFDirections & CEquivalentBSDFLayer::getDirections(const BSDFDirection t_Side) const + const SingleLayerOptics::BSDFDirections & + CEquivalentBSDFLayer::getDirections(const SingleLayerOptics::BSDFDirection t_Side) const { return m_Layer[0]->getDirections(t_Side); } @@ -72,7 +92,7 @@ namespace MultiLayerOptics { calculate(); } - return m_Tot.at(std::make_pair(t_Side, t_Property)); + return m_Tot.at({t_Side, t_Property}); } void CEquivalentBSDFLayer::setSolarRadiation(CSeries & t_SolarRadiation) @@ -87,7 +107,7 @@ namespace MultiLayerOptics m_Calculated = false; } - std::vector> & CEquivalentBSDFLayer::getLayers() + std::vector> & CEquivalentBSDFLayer::getLayers() { return m_Layer; } @@ -97,10 +117,21 @@ namespace MultiLayerOptics return m_Layer.size(); } + void CEquivalentBSDFLayer::setMatrixLayerWavelengths(const std::vector & wavelenghts) + { + m_CombinedLayerWavelengths = wavelenghts; + m_LayersWL.clear(); + for(const auto & layer : m_Layer) + { + layer->setBandWavelengths(wavelenghts); + updateWavelengthLayers(*layer); + } + } + void CEquivalentBSDFLayer::calculate() { - size_t matrixSize = m_Lambda.size(); - size_t numberOfLayers = m_LayersWL[0].getNumberOfLayers(); + const size_t matrixSize = m_Lambda.size(); + const size_t numberOfLayers = m_LayersWL[0].getNumberOfLayers(); for(Side aSide : EnumSide()) { @@ -140,14 +171,13 @@ namespace MultiLayerOptics for(auto aProperty : EnumPropertySimple()) { auto curPropertyMatrix = m_LayersWL[i].getProperty(aSide, aProperty); - m_Tot.at(std::make_pair(aSide, aProperty)) - .addProperties(curWL, curPropertyMatrix); + m_Tot.at({aSide, aProperty}).addProperties(curWL, curPropertyMatrix); } } } } - void CEquivalentBSDFLayer::updateWavelengthLayers(CBSDFLayer & t_Layer) + void CEquivalentBSDFLayer::updateWavelengthLayers(SingleLayerOptics::CBSDFLayer & t_Layer) { const auto aResults = t_Layer.getWavelengthResults(); const auto size = m_CombinedLayerWavelengths.size(); @@ -161,7 +191,8 @@ namespace MultiLayerOptics const auto index = t_Layer.getBandIndex(curWL); assert(index > -1); - const BSDFIntegrator currentLayer = aResults[static_cast(index)]; + const SingleLayerOptics::BSDFIntegrator currentLayer = + aResults[static_cast(index)]; if(m_LayersWL.size() <= i) { @@ -174,4 +205,15 @@ namespace MultiLayerOptics } } + std::vector CEquivalentBSDFLayer::unionOfLayerWavelengths( + const std::vector> & t_Layer) + { + CCommonWavelengths wl; + for(const auto & layer : t_Layer) + { + wl.addWavelength(layer->getBandWavelengths()); + } + + return wl.getCombinedWavelengths(Combine::Interpolate); + } } // namespace MultiLayerOptics diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index 0ff0a3bd..c3d3ff04 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -8,13 +8,6 @@ #include #include -namespace SingleLayerOptics -{ - enum class BSDFDirection; - class BSDFDirections; - -} // namespace SingleLayerOptics - namespace MultiLayerOptics { class CEquivalentBSDFLayerSingleBand; @@ -24,14 +17,20 @@ namespace MultiLayerOptics class CEquivalentBSDFLayer { public: - CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths); + explicit CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths); + + + explicit CEquivalentBSDFLayer( + std::vector> t_Layer, + const std::optional> & matrixWavelengths); void addLayer(const std::shared_ptr & t_Layer); - const SingleLayerOptics::BSDFDirections & + [[nodiscard]] const SingleLayerOptics::BSDFDirections & getDirections(SingleLayerOptics::BSDFDirection t_Side) const; - std::vector getCommonWavelengths() const; - double getMinLambda() const; - double getMaxLambda() const; + + [[nodiscard]] std::vector getCommonWavelengths() const; + [[nodiscard]] double getMinLambda() const; + [[nodiscard]] double getMaxLambda() const; // Absorptance wavelength by wavelength matrices FenestrationCommon::CMatrixSeries getTotalA(const FenestrationCommon::Side t_Side); @@ -49,6 +48,8 @@ namespace MultiLayerOptics [[nodiscard]] std::vector> & getLayers(); [[nodiscard]] size_t numberOfLayers() const; + void setMatrixLayerWavelengths(const std::vector & wavelenghts); + private: void calculate(); @@ -57,6 +58,9 @@ namespace MultiLayerOptics void updateWavelengthLayers(SingleLayerOptics::CBSDFLayer & t_Layer); + static std::vector unionOfLayerWavelengths( + const std::vector> & t_Layer); + // std::vector of layer results over each wavelength std::vector m_LayersWL; diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index da9838e4..ed9b161f 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -2,13 +2,13 @@ #include #include #include +#include #include "MultiPaneBSDF.hpp" #include "EquivalentBSDFLayer.hpp" #include "EquivalentBSDFLayerSingleBand.hpp" #include "WCESingleLayerOptics.hpp" #include "WCECommon.hpp" -#include "../../SingleLayerOptics/src/PhotovoltaicSpecularBSDFLayer.hpp" namespace SingleLayerOptics { @@ -20,11 +20,31 @@ using namespace SingleLayerOptics; namespace MultiLayerOptics { - CMultiPaneBSDF::CMultiPaneBSDF( - const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData, - const std::vector & t_CommonWavelengths) : + CalculationProperties::CalculationProperties( + const CSeries & solarRadiation, + std::optional> commonWavelengths, + std::optional detectorData) : + SolarRadiation(solarRadiation), + CommonWavelengths(std::move(commonWavelengths)), + DetectorData(std::move(detectorData)) + {} + + CMultiPaneBSDF::CMultiPaneBSDF(const std::vector> & t_Layer, + const std::optional> & matrixWavelengths) : + m_EquivalentLayer(t_Layer, matrixWavelengths), + m_Results(t_Layer[0]->getDirections(BSDFDirection::Incoming)), + m_Calculated(false), + m_MinLambdaCalculated(0), + m_MaxLambdaCalculated(0), + m_Integrator(IntegrationType::Trapezoidal), + m_NormalizationCoefficient(1), + m_BSDFDirections(t_Layer[0]->getDirections(BSDFDirection::Incoming)) + {} + + CMultiPaneBSDF::CMultiPaneBSDF(const std::vector> & t_Layer, + const CSeries & t_SolarRadiation, + const CSeries & t_DetectorData, + const std::vector & t_CommonWavelengths) : m_EquivalentLayer(t_CommonWavelengths), m_Results(t_Layer[0]->getDirections(BSDFDirection::Incoming)), m_Calculated(false), @@ -122,7 +142,8 @@ namespace MultiLayerOptics const std::vector> & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation, const FenestrationCommon::CSeries & t_DetectorData) : - CMultiPaneBSDF(t_Layer, t_SolarRadiation, t_DetectorData, getCommonWavelengthsFromLayers(t_Layer)) + CMultiPaneBSDF( + t_Layer, t_SolarRadiation, t_DetectorData, getCommonWavelengthsFromLayers(t_Layer)) {} SquareMatrix CMultiPaneBSDF::getMatrix(const double minLambda, @@ -169,7 +190,7 @@ namespace MultiLayerOptics { // each incoming spectra must be interpolated to same wavelengths as this IGU is // using - aSpectra = aSpectra.interpolate(m_EquivalentLayer.getCommonWavelengths()); + // aSpectra = aSpectra.interpolate(m_EquivalentLayer.getCommonWavelengths()); CSeries iTotalSolar = aSpectra.integrate(m_Integrator, m_NormalizationCoefficient); m_IncomingSolar.push_back(iTotalSolar.sum(minLambda, maxLambda)); @@ -181,14 +202,20 @@ namespace MultiLayerOptics for(Side aSide : EnumSide()) { CMatrixSeries aTotalA = m_EquivalentLayer.getTotalA(aSide); - aTotalA.mMult(m_IncomingSpectra); // Calculates absorbed energy in every layer for every wavelength - aTotalA.integrate(m_Integrator, m_NormalizationCoefficient); + if(m_SpectralIntegrationWavelengths.has_value()) + { + aTotalA.interpolate(m_SpectralIntegrationWavelengths.value()); + } + aTotalA.mMult(m_IncomingSpectra); + aTotalA.integrate( + m_Integrator, m_NormalizationCoefficient, m_SpectralIntegrationWavelengths); // Calculates total absorptance for every layer over the given wavelength range m_Abs[aSide] = aTotalA.getSums(minLambda, maxLambda, m_IncomingSolar); CMatrixSeries jscTotal = m_EquivalentLayer.getTotalJSC(aSide); - jscTotal.integrate(m_Integrator, m_NormalizationCoefficient); + jscTotal.integrate( + m_Integrator, m_NormalizationCoefficient, m_SpectralIntegrationWavelengths); auto jscSum{jscTotal.getSums(minLambda, maxLambda)}; std::vector> jscWithSolar; @@ -207,20 +234,25 @@ namespace MultiLayerOptics for(PropertySimple aProprerty : EnumPropertySimple()) { CMatrixSeries aTot = m_EquivalentLayer.getTotal(aSide, aProprerty); + if(m_SpectralIntegrationWavelengths.has_value()) + { + aTot.interpolate(m_SpectralIntegrationWavelengths.value()); + } aTot.mMult(m_IncomingSpectra); - aTot.integrate(m_Integrator, m_NormalizationCoefficient); + aTot.integrate( + m_Integrator, m_NormalizationCoefficient, m_SpectralIntegrationWavelengths); aResults[{aSide, aProprerty}] = aTot.getSquaredMatrixSums(minLambda, maxLambda, m_IncomingSolar); } // Update result matrices - m_Results.setMatrices(aResults.at(std::make_pair(aSide, PropertySimple::T)), - aResults.at(std::make_pair(aSide, PropertySimple::R)), + m_Results.setMatrices(aResults.at({aSide, PropertySimple::T}), + aResults.at({aSide, PropertySimple::R}), aSide); } // calculate hemispherical absorptances - for(Side aSide : EnumSide()) + for(const Side aSide : EnumSide()) { calcHemisphericalAbs(aSide); } @@ -441,6 +473,13 @@ namespace MultiLayerOptics m_EquivalentLayer.setSolarRadiation(m_SolarRadiationInit); } + std::unique_ptr CMultiPaneBSDF::create( + const std::vector> & t_Layer, + const std::optional> & matrixWavelengths) + { + return std::unique_ptr(new CMultiPaneBSDF(t_Layer, matrixWavelengths)); + } + std::unique_ptr CMultiPaneBSDF::create(const std::shared_ptr & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation, @@ -555,6 +594,19 @@ namespace MultiLayerOptics // return 0; return m_EquivalentLayer.getMaxLambda(); } + + void CMultiPaneBSDF::setCalculationProperties(const CalculationProperties & calcProperties) + { + const auto directionsSize{m_BSDFDirections.size()}; + + this->m_IncomingSpectra = std::vector(directionsSize); + for(size_t i = 0; i < directionsSize; ++i) + { + this->m_IncomingSpectra[i] = calcProperties.SolarRadiation; + } + m_SpectralIntegrationWavelengths = calcProperties.CommonWavelengths; + } + std::vector CMultiPaneBSDF::getAbsorptanceLayers(const double minLambda, const double maxLambda, @@ -564,7 +616,7 @@ namespace MultiLayerOptics const double phi) { std::vector abs; - size_t absSize{m_EquivalentLayer.numberOfLayers()}; + const size_t absSize{m_EquivalentLayer.numberOfLayers()}; for(size_t i = 1u; i <= absSize; ++i) { switch(scattering) @@ -589,7 +641,7 @@ namespace MultiLayerOptics const double phi) { std::vector abs; - size_t absSize{m_EquivalentLayer.numberOfLayers()}; + const size_t absSize{m_EquivalentLayer.numberOfLayers()}; for(size_t i = 1u; i <= absSize; ++i) { switch(scattering) @@ -640,5 +692,4 @@ namespace MultiLayerOptics - DirDir(minLambda, maxLambda, t_Side, t_Property, t_Theta, t_Phi); } - } // namespace MultiLayerOptics diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp index 27fd94ca..cac719b3 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp @@ -24,9 +24,24 @@ namespace MultiLayerOptics { class CEquivalentBSDFLayer; + struct CalculationProperties + { + CalculationProperties( + const FenestrationCommon::CSeries & solarRadiation, + std::optional> commonWavelengths = std::nullopt, + std::optional detectorData = std::nullopt); + FenestrationCommon::CSeries SolarRadiation; + std::optional> CommonWavelengths; + std::optional DetectorData; + }; + class CMultiPaneBSDF : public SingleLayerOptics::IScatteringLayer { public: + static std::unique_ptr + create(const std::vector> & t_Layer, + const std::optional> & matrixWavelengths = std::nullopt); + static std::unique_ptr create(const std::shared_ptr & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation, @@ -228,12 +243,18 @@ namespace MultiLayerOptics double t_Theta, double t_Phi); - std::vector getWavelengths() const override; + [[nodiscard]] std::vector getWavelengths() const override; - double getMinLambda() const override; - double getMaxLambda() const override; + [[nodiscard]] double getMinLambda() const override; + [[nodiscard]] double getMaxLambda() const override; + + void setCalculationProperties(const CalculationProperties & calcProperties); protected: + explicit CMultiPaneBSDF( + const std::vector> & t_Layer, + const std::optional> & matrixWavelengths); + CMultiPaneBSDF(const std::vector> & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation, const std::vector & t_CommonWavelengths); @@ -266,7 +287,8 @@ namespace MultiLayerOptics [[nodiscard]] std::vector getCommonWavelengthsFromLayers( const std::vector> & t_Layer) const; - static double integrateBSDFAbsorptance(const std::vector & lambda, const std::vector & absorptance); + static double integrateBSDFAbsorptance(const std::vector & lambda, + const std::vector & absorptance); CEquivalentBSDFLayer m_EquivalentLayer; @@ -293,6 +315,12 @@ namespace MultiLayerOptics FenestrationCommon::IntegrationType m_Integrator; double m_NormalizationCoefficient; + + SingleLayerOptics::BSDFDirections m_BSDFDirections; + + // These are wavelength used only for the spectral integration seprately from wavelengths in + // matrices calculations. Matrices wavelenghts will be used only if this is not provided. + std::optional> m_SpectralIntegrationWavelengths; }; } // namespace MultiLayerOptics diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp index de2d2af9..ef58b0dd 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp @@ -121,73 +121,75 @@ class MultiPaneBSDF_102 : public testing::Test virtual void SetUp() { // Create material from samples - double thickness = 3.048e-3; // [m] + constexpr double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - - // BSDF definition is needed as well as its material representation + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); - m_Layer = CMultiPaneBSDF::create(Layer_102, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_102}); + + const CalculationProperties input{loadSolarRadiationFile(), loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: - CMultiPaneBSDF & getLayer() + [[nodiscard]] CMultiPaneBSDF & getLayer() const { return *m_Layer; - }; + } }; TEST_F(MultiPaneBSDF_102, TestSpecular1) { SCOPED_TRACE("Begin Test: Specular layer - BSDF."); - const double minLambda = 0.3; - const double maxLambda = 2.5; + constexpr double minLambda = 0.3; + constexpr double maxLambda = 2.5; CMultiPaneBSDF & aLayer = getLayer(); - double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.745379, tauDiff, 1e-6); + const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); + EXPECT_NEAR(0.745404, tauDiff, 1e-6); - double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.153050, rhoDiff, 1e-6); + const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); + EXPECT_NEAR(0.152995, rhoDiff, 1e-6); - double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.101571, absDiff1, 1e-6); + const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); + EXPECT_NEAR(0.101601, absDiff1, 1e-6); double theta = 0; double phi = 0; - auto absDiffFrontElectricity = aLayer.getAbsorptanceLayersElectricity( - minLambda, maxLambda, Side::Front, FenestrationCommon::ScatteringSimple::Diffuse, theta, phi); + const auto absDiffFrontElectricity = aLayer.getAbsorptanceLayersElectricity( + minLambda, maxLambda, Side::Front, ScatteringSimple::Diffuse, theta, phi); EXPECT_NEAR(0.0, absDiffFrontElectricity[0], 1e-6); double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.833807, tauHem, 1e-6); + EXPECT_NEAR(0.833843, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.833807, tauDir, 1e-6); + EXPECT_NEAR(0.833843, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.074817, rhoHem, 1e-6); + EXPECT_NEAR(0.074761, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.074817, rhoDir, 1e-6); + EXPECT_NEAR(0.074761, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.091376, abs1, 1e-6); + EXPECT_NEAR(0.091396, abs1, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.822230, tauHem, 1e-6); + EXPECT_NEAR(0.822262, tauHem, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.079382, rhoHem, 1e-6); + EXPECT_NEAR(0.079326, rhoHem, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.098388, abs1, 1e-6); + EXPECT_NEAR(0.098413, abs1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp index 76f6b88c..38f72202 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp @@ -196,16 +196,11 @@ class MultiPaneBSDF_102_103 : public testing::Test auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_103 = CBSDFLayerMaker::getSpecularLayer(aMaterial_103, aBSDF); - // To assure interpolation to common wavelengths. MultiBSDF will NOT work with different - // wavelengths - CCommonWavelengths aCommonWL; - aCommonWL.addWavelength(Layer_102->getBandWavelengths()); - aCommonWL.addWavelength(Layer_103->getBandWavelengths()); + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_103}); - auto commonWavelengths = aCommonWL.getCombinedWavelengths(Combine::Interpolate); - - m_Layer = CMultiPaneBSDF::create( - {Layer_102, Layer_103}, loadSolarRadiationFile(), commonWavelengths); + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -225,369 +220,50 @@ TEST_F(MultiPaneBSDF_102_103, TestSpecular1) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.542363245, tauDiff, 1e-6); + EXPECT_NEAR(0.542341, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.221296951, rhoDiff, 1e-6); + EXPECT_NEAR(0.221229, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.110614233, absDiff1, 1e-6); + EXPECT_NEAR(0.110653, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.125725571, absDiff2, 1e-6); + EXPECT_NEAR(0.125776, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.6523021, tauHem, 1e-6); + EXPECT_NEAR(0.652295, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.6523021, tauDir, 1e-6); + EXPECT_NEAR(0.652295, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.1247990, rhoHem, 1e-6); + EXPECT_NEAR(0.124734, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.1247990, rhoDir, 1e-6); + EXPECT_NEAR(0.124734, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.0960423, abs1, 1e-6); + EXPECT_NEAR(0.096067, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.1268566, abs2, 1e-6); + EXPECT_NEAR(0.126904, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.6316995, tauHem, 1e-6); + EXPECT_NEAR(0.631684, tauHem, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.1310145, rhoHem, 1e-6); + EXPECT_NEAR(0.130947, rhoHem, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.1036131, abs1, 1e-6); + EXPECT_NEAR(0.10364381087538396, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.1336729, abs2, 1e-6); - - SquareMatrix aT = aLayer.getMatrix(minLambda, maxLambda, Side::Front, PropertySimple::T); - - // Front transmittance matrix - size_t size = aT.size(); - - std::vector correctResults; - correctResults.push_back(8.48465113); - correctResults.push_back(9.091993); - correctResults.push_back(9.091993); - correctResults.push_back(9.091993); - correctResults.push_back(9.091993); - correctResults.push_back(9.091993); - correctResults.push_back(9.091993); - correctResults.push_back(9.091993); - correctResults.push_back(9.091993); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(8.21019002); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(7.43187164); - correctResults.push_back(3.29115035); - correctResults.push_back(3.29115035); - correctResults.push_back(3.29115035); - correctResults.push_back(3.29115035); - correctResults.push_back(3.29115035); - correctResults.push_back(3.29115035); - correctResults.push_back(3.29115035); - correctResults.push_back(3.29115035); - - EXPECT_EQ(correctResults.size(), aT.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aT(i, i), 1e-6); - } - - // Back Reflectance matrix - SquareMatrix aRb = aLayer.getMatrix(minLambda, maxLambda, Side::Back, PropertySimple::R); - - correctResults.clear(); - - correctResults.push_back(1.51773038); - correctResults.push_back(1.63363393); - correctResults.push_back(1.63363393); - correctResults.push_back(1.63363393); - correctResults.push_back(1.63363393); - correctResults.push_back(1.63363393); - correctResults.push_back(1.63363393); - correctResults.push_back(1.63363393); - correctResults.push_back(1.63363393); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(1.58473531); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(2.15213242); - correctResults.push_back(5.8487035); - correctResults.push_back(5.8487035); - correctResults.push_back(5.8487035); - correctResults.push_back(5.8487035); - correctResults.push_back(5.8487035); - correctResults.push_back(5.8487035); - correctResults.push_back(5.8487035); - correctResults.push_back(5.8487035); - - EXPECT_EQ(correctResults.size(), aRb.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aRb(i, i), 1e-6); - } - - // Front absorptance layer 1 - std::vector aAbsF = aLayer.Abs(minLambda, maxLambda, Side::Front, 1); - - correctResults.clear(); - - correctResults.push_back(0.0960423109); - correctResults.push_back(0.0979134775); - correctResults.push_back(0.0979134775); - correctResults.push_back(0.0979134775); - correctResults.push_back(0.0979134775); - correctResults.push_back(0.0979134775); - correctResults.push_back(0.0979134775); - correctResults.push_back(0.0979134775); - correctResults.push_back(0.0979134775); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.103613076); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.113529853); - correctResults.push_back(0.129362807); - correctResults.push_back(0.129362807); - correctResults.push_back(0.129362807); - correctResults.push_back(0.129362807); - correctResults.push_back(0.129362807); - correctResults.push_back(0.129362807); - correctResults.push_back(0.129362807); - correctResults.push_back(0.129362807); - - EXPECT_EQ(correctResults.size(), aAbsF.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aAbsF[i], 1e-6); - } - - // Front absorptance layer 2 - aAbsF = aLayer.Abs(minLambda, maxLambda, Side::Front, 2); - - correctResults.clear(); - - correctResults.push_back(0.126856608); - correctResults.push_back(0.128792833); - correctResults.push_back(0.128792833); - correctResults.push_back(0.128792833); - correctResults.push_back(0.128792833); - correctResults.push_back(0.128792833); - correctResults.push_back(0.128792833); - correctResults.push_back(0.128792833); - correctResults.push_back(0.128792833); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.133672932); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.135961523); - correctResults.push_back(0.0969602521); - correctResults.push_back(0.0969602521); - correctResults.push_back(0.0969602521); - correctResults.push_back(0.0969602521); - correctResults.push_back(0.0969602521); - correctResults.push_back(0.0969602521); - correctResults.push_back(0.0969602521); - correctResults.push_back(0.0969602521); - - EXPECT_EQ(correctResults.size(), aAbsF.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aAbsF[i], 1e-6); - } - - // Back absorptance layer 1 - std::vector aAbsB = aLayer.Abs(minLambda, maxLambda, Side::Back, 1); - - correctResults.clear(); - - correctResults.push_back(0.0638957951); - correctResults.push_back(0.0647910638); - correctResults.push_back(0.0647910638); - correctResults.push_back(0.0647910638); - correctResults.push_back(0.0647910638); - correctResults.push_back(0.0647910638); - correctResults.push_back(0.0647910638); - correctResults.push_back(0.0647910638); - correctResults.push_back(0.0647910638); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0670154364); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0679155523); - correctResults.push_back(0.0492207385); - correctResults.push_back(0.0492207385); - correctResults.push_back(0.0492207385); - correctResults.push_back(0.0492207385); - correctResults.push_back(0.0492207385); - correctResults.push_back(0.0492207385); - correctResults.push_back(0.0492207385); - correctResults.push_back(0.0492207385); - - EXPECT_EQ(correctResults.size(), aAbsB.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aAbsB[i], 1e-6); - } - - // Back absorptance layer 2 - aAbsB = aLayer.Abs(minLambda, maxLambda, Side::Back, 2); - - correctResults.clear(); - - correctResults.push_back(0.16711867); - correctResults.push_back(0.170169853); - correctResults.push_back(0.170169853); - correctResults.push_back(0.170169853); - correctResults.push_back(0.170169853); - correctResults.push_back(0.170169853); - correctResults.push_back(0.170169853); - correctResults.push_back(0.170169853); - correctResults.push_back(0.170169853); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.179354099); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.194682457); - correctResults.push_back(0.211016157); - correctResults.push_back(0.211016157); - correctResults.push_back(0.211016157); - correctResults.push_back(0.211016157); - correctResults.push_back(0.211016157); - correctResults.push_back(0.211016157); - correctResults.push_back(0.211016157); - correctResults.push_back(0.211016157); - - EXPECT_EQ(correctResults.size(), aAbsB.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aAbsB[i], 1e-6); - } + EXPECT_NEAR(0.13372437711523896, abs2, 1e-6); } diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index dbfe82c5..84ebf622 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -68,6 +68,7 @@ namespace SingleLayerOptics void CBSDFLayer::setBandWavelengths(const std::vector & wavelengths) { m_Cell->setBandWavelengths(wavelengths); + m_CalculatedWV = false; } void CBSDFLayer::calc_dir_dir() diff --git a/src/SpectralAveraging/src/AngularSpectralSample.cpp b/src/SpectralAveraging/src/AngularSpectralSample.cpp index 4e16ad41..769a6582 100755 --- a/src/SpectralAveraging/src/AngularSpectralSample.cpp +++ b/src/SpectralAveraging/src/AngularSpectralSample.cpp @@ -195,6 +195,9 @@ namespace SpectralAveraging void CAngularSpectralSample::setBandWavelengths(const std::vector & wavelegths) { m_SpectralSampleZero->setWavelengths(WavelengthSet::Custom, wavelegths); + + // All previous spectral properties are calculated with different wavelengths + m_SpectralProperties.clear(); } void CAngularSpectralSample::Flipped(bool flipped) diff --git a/src/SpectralAveraging/src/SpectralSample.cpp b/src/SpectralAveraging/src/SpectralSample.cpp index 0e84e39c..f61ddedb 100644 --- a/src/SpectralAveraging/src/SpectralSample.cpp +++ b/src/SpectralAveraging/src/SpectralSample.cpp @@ -321,7 +321,7 @@ namespace SpectralAveraging { for(const auto & side : EnumSide()) { - m_Property[std::make_pair(prop, side)] = m_SampleData->properties(prop, side); + m_Property[{prop, side}] = m_SampleData->properties(prop, side); } } From b9765873fde1d5a50608d737824745c50d23cc3f Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 29 Jul 2022 15:33:10 -0700 Subject: [PATCH 27/81] Update to few unit tests. Results change so far is minimal mainly because tests are not using condensed. --- .../MultiPaneBSDF_102_103_SmallBasis.unit.cpp | 147 +++++++++--------- .../MultiPaneBSDF_102_BSDFMaterial.unit.cpp | 41 +++-- ...aneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 52 ++++--- ...iPaneBSDF_102_PerfectDiffuseSolar.unit.cpp | 40 ++--- 4 files changed, 137 insertions(+), 143 deletions(-) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp index e42ce478..a6ba6a3f 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp @@ -194,14 +194,11 @@ class MultiPaneBSDF_102_103_SmallBasis : public testing::Test auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_103 = CBSDFLayerMaker::getSpecularLayer(aMaterial_103, aBSDF); - CCommonWavelengths aCommonWL; - aCommonWL.addWavelength(Layer_102->getBandWavelengths()); - aCommonWL.addWavelength(Layer_103->getBandWavelengths()); + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_103}); - const auto commonWavelengths = aCommonWL.getCombinedWavelengths(Combine::Interpolate); - - m_Layer = CMultiPaneBSDF::create( - {Layer_102, Layer_103}, loadSolarRadiationFile(), commonWavelengths); + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -221,94 +218,94 @@ TEST_F(MultiPaneBSDF_102_103_SmallBasis, TestSpecular1) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.5497857, tauDiff, 1e-6); + EXPECT_NEAR(0.54976370532030339, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.2138695, rhoDiff, 1e-6); + EXPECT_NEAR(0.21380205110969738, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.1098981, absDiff1, 1e-6); + EXPECT_NEAR(0.10993657822059322, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.1264467, absDiff2, 1e-6); + EXPECT_NEAR(0.12649766534940604, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.6523021, tauHem, 1e-6); + EXPECT_NEAR(0.65229527465721315, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.6523021, tauDir, 1e-6); + EXPECT_NEAR(0.65229527465721315, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.1247990, rhoHem, 1e-6); + EXPECT_NEAR(0.12473355299988217, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.1247990, rhoDir, 1e-6); + EXPECT_NEAR(0.12473355299988217, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.0960423, abs1, 1e-6); + EXPECT_NEAR(0.096067402665126048, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.1268566, abs2, 1e-6); + EXPECT_NEAR(0.12690376967777861, abs2, 1e-6); double energyTransmitted = aLayer.energy(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(492.6576736, energyTransmitted, 1e-6); + EXPECT_NEAR(493.72164435424634, energyTransmitted, 1e-6); double energyReflected = aLayer.energy(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(94.2557185, energyReflected, 1e-6); + EXPECT_NEAR(94.410702155725588, energyReflected, 1e-6); double energyAbsLayer1 = aLayer.energyAbs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(72.5369194, energyAbsLayer1, 1e-6); + EXPECT_NEAR(72.713321490168255, energyAbsLayer1, 1e-6); double energyAbsLayer2 = aLayer.energyAbs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(95.8097270, energyAbsLayer2, 1e-6); + EXPECT_NEAR(96.053336999859795, energyAbsLayer2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.6262463, tauHem, 1e-6); + EXPECT_NEAR(0.62622978845865929, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.626246, tauDir, 1e-6); + EXPECT_NEAR(0.62622978845865929, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.1342744, rhoHem, 1e-6); + EXPECT_NEAR(0.13420694161868743, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.1342744, rhoDir, 1e-6); + EXPECT_NEAR(0.13420694161868743, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.1049541, abs1, 1e-6); + EXPECT_NEAR(0.10498591144459012, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.1345253, abs2, 1e-6); + EXPECT_NEAR(0.13457735847806315, abs2, 1e-6); energyTransmitted = aLayer.energy(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(472.9787789, energyTransmitted, 1e-6); + EXPECT_NEAR(473.9927037857197, energyTransmitted, 1e-6); energyTransmitted = aLayer.energy(0.5, 0.8, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(186.8455475, energyTransmitted, 1e-6); + EXPECT_NEAR(186.62837845781016, energyTransmitted, 1e-6); // repeatability test energyTransmitted = aLayer.energy(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(472.9787789, energyTransmitted, 1e-6); + EXPECT_NEAR(473.9927037857197, energyTransmitted, 1e-6); energyReflected = aLayer.energy(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(101.4120988, energyReflected, 1e-6); + EXPECT_NEAR(101.5811005752776, energyReflected, 1e-6); energyAbsLayer1 = aLayer.energyAbs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(79.2676028, energyAbsLayer1, 1e-6); + EXPECT_NEAR(79.463731911428368, energyAbsLayer1, 1e-6); energyAbsLayer2 = aLayer.energyAbs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(101.6015581, energyAbsLayer2, 1e-6); + EXPECT_NEAR(101.86146872757432, energyAbsLayer2, 1e-6); SquareMatrix aT = aLayer.getMatrix(minLambda, maxLambda, Side::Front, PropertySimple::T); @@ -316,13 +313,13 @@ TEST_F(MultiPaneBSDF_102_103_SmallBasis, TestSpecular1) size_t size = aT.size(); std::vector correctResults; - correctResults.push_back(16.202475); - correctResults.push_back(2.09947766); - correctResults.push_back(1.15552123); - correctResults.push_back(0.905947122); - correctResults.push_back(0.850086133); - correctResults.push_back(0.872356377); - correctResults.push_back(0.5277899); + correctResults.push_back(16.202306630470943); + correctResults.push_back(2.0994523015534954); + correctResults.push_back(1.1555013246318735); + correctResults.push_back(0.90592328506909625); + correctResults.push_back(0.85005077833989717); + correctResults.push_back(0.87229229178649292); + correctResults.push_back(0.52765696862096956); EXPECT_EQ(correctResults.size(), aT.size()); for(size_t i = 0; i < size; ++i) @@ -335,13 +332,13 @@ TEST_F(MultiPaneBSDF_102_103_SmallBasis, TestSpecular1) correctResults.clear(); - correctResults.push_back(2.89829105); - correctResults.push_back(0.376065603); - correctResults.push_back(0.210671232); - correctResults.push_back(0.18064666); - correctResults.push_back(0.227949327); - correctResults.push_back(0.475644426); - correctResults.push_back(1.87553179); + correctResults.push_back(2.896573640240212); + correctResults.push_back(0.37584255043736337); + correctResults.push_back(0.21054714693299273); + correctResults.push_back(0.18054614802642399); + correctResults.push_back(0.2278464147455416); + correctResults.push_back(0.47551039225315556); + correctResults.push_back(1.8752888873722997); EXPECT_EQ(correctResults.size(), aRb.size()); for(size_t i = 0; i < size; ++i) @@ -354,13 +351,13 @@ TEST_F(MultiPaneBSDF_102_103_SmallBasis, TestSpecular1) correctResults.clear(); - correctResults.push_back(0.0960423109); - correctResults.push_back(0.0970166532); - correctResults.push_back(0.099961799); - correctResults.push_back(0.104954054); - correctResults.push_back(0.112192901); - correctResults.push_back(0.121950745); - correctResults.push_back(0.126973949); + correctResults.push_back(0.096067402665126048); + correctResults.push_back(0.097042409187008224); + correctResults.push_back(0.099989670905807723); + correctResults.push_back(0.10498591144459012); + correctResults.push_back(0.11223152139106932); + correctResults.push_back(0.12200057526702383); + correctResults.push_back(0.12703978197284008); EXPECT_EQ(correctResults.size(), aAbsF.size()); for(size_t i = 0; i < size; ++i) @@ -373,13 +370,13 @@ TEST_F(MultiPaneBSDF_102_103_SmallBasis, TestSpecular1) correctResults.clear(); - correctResults.push_back(0.126856608); - correctResults.push_back(0.127881001); - correctResults.push_back(0.130746729); - correctResults.push_back(0.134525267); - correctResults.push_back(0.136282427); - correctResults.push_back(0.127692418); - correctResults.push_back(0.0763087652); + correctResults.push_back(0.12690376967777861); + correctResults.push_back(0.12792875672061266); + correctResults.push_back(0.13079621635486524); + correctResults.push_back(0.13457735847806315); + correctResults.push_back(0.13633701673129794); + correctResults.push_back(0.12774660073699731); + correctResults.push_back(0.076350111838570101); EXPECT_EQ(correctResults.size(), aAbsF.size()); for(size_t i = 0; i < size; ++i) @@ -392,13 +389,13 @@ TEST_F(MultiPaneBSDF_102_103_SmallBasis, TestSpecular1) correctResults.clear(); - correctResults.push_back(0.0638957951); - correctResults.push_back(0.0643701066); - correctResults.push_back(0.065688493); - correctResults.push_back(0.0673951909); - correctResults.push_back(0.0680914478); - correctResults.push_back(0.0638832783); - correctResults.push_back(0.0392182324); + correctResults.push_back(0.063948499642935183); + correctResults.push_back(0.064423474613820433); + correctResults.push_back(0.065743878771512554); + correctResults.push_back(0.067453856999387704); + correctResults.push_back(0.068153610790158664); + correctResults.push_back(0.063944806096251347); + correctResults.push_back(0.039256910553195336); EXPECT_EQ(correctResults.size(), aAbsB.size()); for(size_t i = 0; i < size; ++i) @@ -411,13 +408,13 @@ TEST_F(MultiPaneBSDF_102_103_SmallBasis, TestSpecular1) correctResults.clear(); - correctResults.push_back(0.16711867); - correctResults.push_back(0.168709322); - correctResults.push_back(0.173491484); - correctResults.push_back(0.181484482); - correctResults.push_back(0.192686234); - correctResults.push_back(0.206353414); - correctResults.push_back(0.200604864); + correctResults.push_back(0.16714188545079209); + correctResults.push_back(0.16873291033256413); + correctResults.push_back(0.17351628350131887); + correctResults.push_back(0.18151177345980363); + correctResults.push_back(0.19271888191386993); + correctResults.push_back(0.20639914158521594); + correctResults.push_back(0.20068506473834066); EXPECT_EQ(correctResults.size(), aAbsB.size()); for(size_t i = 0; i < size; ++i) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp index b62340d6..c96b5a69 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp @@ -180,16 +180,11 @@ class MultiPaneBSDF_102_BSDFMaterial : public testing::Test auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_BSDF = CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); - // To assure interpolation to common wavelengths. MultiBSDF will NOT work with different - // wavelengths - CCommonWavelengths aCommonWL; - aCommonWL.addWavelength(Layer_102->getBandWavelengths()); - aCommonWL.addWavelength(aBSDFMaterial->getBandWavelengths()); + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_BSDF}); - auto commonWavelengths = aCommonWL.getCombinedWavelengths(Combine::Interpolate); - - m_Layer = CMultiPaneBSDF::create( - {Layer_102, Layer_BSDF}, loadSolarRadiationFile(), commonWavelengths); + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -213,52 +208,52 @@ TEST_F(MultiPaneBSDF_102_BSDFMaterial, TestBSDFMatrixAsInput) EXPECT_NEAR(0.058609, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.444385, rhoDiff, 1e-6); + EXPECT_NEAR(0.44433223714424036, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.138513, absDiff1, 1e-6); + EXPECT_NEAR(0.13857080250913759, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.358492, absDiff2, 1e-6); + EXPECT_NEAR(0.35848841575310808, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.131689, tauHem, 1e-6); + EXPECT_NEAR(0.1316916955053411, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.068362, tauDir, 1e-6); + EXPECT_NEAR(0.068364887108632283, tauDir, 1e-6); double rhoFrontHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.403499, rhoFrontHem, 1e-6); + EXPECT_NEAR(0.40344839276982031, rhoFrontHem, 1e-6); double rhoBackHem = aLayer.DirHem(minLambda, maxLambda, Side::Back, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.546234, rhoBackHem, 1e-6); + EXPECT_NEAR(0.54623205457314916, rhoBackHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.079319, rhoDir, 1e-6); + EXPECT_NEAR(0.079263709499976409, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.133011, abs1, 1e-6); + EXPECT_NEAR(0.13306146522159512, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.331802, abs2, 1e-6); + EXPECT_NEAR(0.33179844650324364, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.063015, tauHem, 1e-6); + EXPECT_NEAR(0.063015033338337426, tauHem, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.404596, rhoHem, 1e-6); + EXPECT_NEAR(0.40454319336327105, rhoHem, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.140223, abs1, 1e-6); + EXPECT_NEAR(0.14027972021172253, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.392165, abs2, 1e-6); + EXPECT_NEAR(0.39216205308666896, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index d04ff351..363b8454 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -1344,8 +1344,6 @@ return { auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - aMaterial_102->setBandWavelengths(condensedSpectrum); - const auto aBSDF = BSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Full); auto tfSolar = TransmittanceFrontSolar(); auto tbSolar = TransmittanceBackSolar(); @@ -1358,22 +1356,27 @@ return { auto nirRatio{0.499}; const auto aBSDFMaterial = SingleLayerOptics::Material::dualBandBSDFMaterial(tfSolar, - tbSolar, - rfSolar, - rbSolar, - tfVisible, - tbVisible, - rfVisible, - rbVisible, - aBSDF, - nirRatio); + tbSolar, + rfSolar, + rbSolar, + tfVisible, + tbVisible, + rfVisible, + rbVisible, + aBSDF, + nirRatio); + + auto Layer_Glass = + SingleLayerOptics::CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); - aBSDFMaterial->setBandWavelengths(condensedSpectrum); + auto Layer_BSDF = + SingleLayerOptics::CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); - auto Layer_Glass = SingleLayerOptics::CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); - auto Layer_BSDF = SingleLayerOptics::CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); + m_Layer = CMultiPaneBSDF::create({Layer_Glass, Layer_BSDF}, condensedSpectrum); - m_Layer = CMultiPaneBSDF::create({Layer_Glass, Layer_BSDF}, loadSolarRadiationFile()); + const MultiLayerOptics::CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -1401,30 +1404,29 @@ TEST_F(MultiPaneBSDF_102_BSDFMaterial_2011_SA1, TestBSDFMatrixAsInput) double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.104287, tauHem, 1e-6); + EXPECT_NEAR(0.1042435801750107, tauHem, 1e-6); double rhoFrontHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.405182, rhoFrontHem, 1e-6); + EXPECT_NEAR(0.39444965507057406, rhoFrontHem, 1e-6); double rhoBackHem = aLayer.DirHem(minLambda, maxLambda, Side::Back, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.527871, rhoBackHem, 1e-6); + EXPECT_NEAR(0.52469447798200541, rhoBackHem, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.116106, abs1, 1e-6); + EXPECT_NEAR(0.13326587636977402, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.374426, abs2, 1e-6); + EXPECT_NEAR(0.36804088838464255, abs2, 1e-6); auto absHeatDirect = aLayer.getAbsorptanceLayersHeat( minLambda, maxLambda, Side::Front, ScatteringSimple::Direct, 0, 0); - EXPECT_NEAR(0.116106, absHeatDirect[0], 1e-6); - EXPECT_NEAR(0.374426, absHeatDirect[1], 1e-6); + EXPECT_NEAR(0.13326587636977402, absHeatDirect[0], 1e-6); + EXPECT_NEAR(0.36804088838464255, absHeatDirect[1], 1e-6); auto absHeatDiffuse = aLayer.getAbsorptanceLayersHeat( minLambda, maxLambda, Side::Front, ScatteringSimple::Diffuse, 0, 0); - EXPECT_NEAR(0.124832, absHeatDiffuse[0], 1e-6); - EXPECT_NEAR(0.313837, absHeatDiffuse[1], 1e-6); - + EXPECT_NEAR(0.1423585687567171, absHeatDiffuse[0], 1e-6); + EXPECT_NEAR(0.30810470981349697, absHeatDiffuse[1], 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp index 1903ae4a..c8dc17b4 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp @@ -149,11 +149,11 @@ class MultiPaneBSDF_102_PerfectDiffuseSolar : public testing::Test const auto diffuseLayer = CBSDFLayerMaker::getPerfectlyDiffuseLayer(aMaterial, aBSDF); - // This is to test if results will remain the same even with empty detector spectrum. - const CSeries detectorSpectrum; + m_Layer = CMultiPaneBSDF::create({Layer_102, diffuseLayer}); - m_Layer = CMultiPaneBSDF::create( - {Layer_102, diffuseLayer}, loadSolarRadiationFile(), detectorSpectrum); + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -173,60 +173,60 @@ TEST_F(MultiPaneBSDF_102_PerfectDiffuseSolar, TestPerfectDiffuseBSDFSolar) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.386326, tauDiff, 1e-6); + EXPECT_NEAR(0.38637289838314581, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.318008, rhoDiff, 1e-6); + EXPECT_NEAR(0.31803807641538445, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.127629, absDiff1, 1e-6); + EXPECT_NEAR(0.12764821273131099, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.168036, absDiff2, 1e-6); + EXPECT_NEAR(0.16794081247015891, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.430114, tauHem, 1e-6); + EXPECT_NEAR(0.43016652103344222, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.005512, tauDir, 1e-6); double tauDirDiff = aLayer.DirDiff(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.424602, tauDirDiff, 1e-6); + EXPECT_NEAR(0.42465395100061826, tauDirDiff, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.263809, rhoHem, 1e-6); + EXPECT_NEAR(0.26384317290208403, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.077463, rhoDir, 1e-6); + EXPECT_NEAR(0.077459867655249023, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.120867, abs1, 1e-6); + EXPECT_NEAR(0.12088446020138374, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.185211, abs2, 1e-6); + EXPECT_NEAR(0.1851058458630902, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.421882, tauHem, 1e-6); + EXPECT_NEAR(0.42193331038834936, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.092829, tauDir, 1e-6); + EXPECT_NEAR(0.092840236914574534, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.266927, rhoHem, 1e-6); + EXPECT_NEAR(0.26696044724945178, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.126096, rhoDir, 1e-6); + EXPECT_NEAR(0.12610059414602581, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.128327, abs1, 1e-6); + EXPECT_NEAR(0.12834556522874757, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.182864, abs2, 1e-6); + EXPECT_NEAR(0.18276067713345145, abs2, 1e-6); } From 68ca9fbb5da9d99ab7b7de19b4e8a8e4c9cc39c3 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 29 Jul 2022 16:16:13 -0700 Subject: [PATCH 28/81] Updated for solar. Visible and IR still non-functional. --- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 7 +--- ...tiPaneBSDF_102_PerforatedCircular.unit.cpp | 41 +++++++++---------- ..._102_PerforatedCircular_NFRC18000.unit.cpp | 26 +++++++----- ...aneBSDF_102_PerforatedRectangular.unit.cpp | 38 +++++++++-------- ...iPaneBSDF_102_VenetianDirectional.unit.cpp | 38 +++++++++-------- ...netianDirectional_n_Band_Material.unit.cpp | 22 ++++++---- ...MultiPaneBSDF_102_VenetianUniform.unit.cpp | 38 +++++++++-------- ...2_VenetianUniform_Multiwavelength.unit.cpp | 40 ++++++++++++++---- .../units/MultiPaneBSDF_102_Woven.unit.cpp | 38 +++++++++-------- ...PaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 22 ++++++---- .../units/MultiPaneBSDF_20243_102.unit.cpp | 41 ++++++++----------- .../tst/units/MultiPaneBSDF_Woven_IR.unit.cpp | 7 +++- ...tiPanePhotovoltaicBSDF_SmallBasis.unit.cpp | 14 ++++--- ...ovoltaicBSDF_SmallBasis_Condensed.unit.cpp | 14 ++++--- 14 files changed, 222 insertions(+), 164 deletions(-) diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index ed9b161f..f32fd402 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -188,11 +188,8 @@ namespace MultiLayerOptics for(CSeries & aSpectra : m_IncomingSpectra) { - // each incoming spectra must be interpolated to same wavelengths as this IGU is - // using - // aSpectra = aSpectra.interpolate(m_EquivalentLayer.getCommonWavelengths()); - - CSeries iTotalSolar = aSpectra.integrate(m_Integrator, m_NormalizationCoefficient); + CSeries iTotalSolar = aSpectra.integrate( + m_Integrator, m_NormalizationCoefficient, m_SpectralIntegrationWavelengths); m_IncomingSolar.push_back(iTotalSolar.sum(minLambda, maxLambda)); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp index d29036d9..a619a882 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp @@ -150,12 +150,11 @@ class MultiPaneBSDF_102_Perforated : public testing::Test const auto perforated = CBSDFLayerMaker::getCircularPerforatedLayer( aMaterialPerforated, aBSDF, x, y, thickness, radius); - CCommonWavelengths commonWavelengths; - commonWavelengths.addWavelength(Layer_102->getBandWavelengths()); - commonWavelengths.addWavelength(perforated->getBandWavelengths()); - const auto common_wl{commonWavelengths.getCombinedWavelengths(Combine::Interpolate)}; + m_Layer = CMultiPaneBSDF::create({Layer_102, perforated}); - m_Layer = CMultiPaneBSDF::create({Layer_102, perforated}, loadSolarRadiationFile(), common_wl); + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -175,56 +174,56 @@ TEST_F(MultiPaneBSDF_102_Perforated, Test102PerofratedCircular) CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.106832, tauDiff, 1e-6); + EXPECT_NEAR(0.10862774324689654, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.571404, rhoDiff, 1e-6); + EXPECT_NEAR(0.56986119983395001, rhoDiff, 1e-6); const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.159854, absDiff1, 1e-6); + EXPECT_NEAR(0.15966839117388992, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.161909, absDiff2, 1e-6); + EXPECT_NEAR(0.16184266574527387, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.162518, tauHem, 1e-6); + EXPECT_NEAR(0.16441435074547683, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.075026, tauDir, 1e-6); + EXPECT_NEAR(0.075075474632259026, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.514337, rhoHem, 1e-6); + EXPECT_NEAR(0.51271683131949242, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.086856, rhoDir, 1e-6); + EXPECT_NEAR(0.086757190772148052, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.153119, abs1, 1e-6); + EXPECT_NEAR(0.15291151130256964, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.170026, abs2, 1e-6); + EXPECT_NEAR(0.16995730663246172, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.124489, tauHem, 1e-6); + EXPECT_NEAR(0.1264541979653489, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.033017, tauDir, 1e-6); + EXPECT_NEAR(0.033066356404909625, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.536386, rhoHem, 1e-6); + EXPECT_NEAR(0.53470392199356542, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.091732, rhoDir, 1e-6); + EXPECT_NEAR(0.09163167458303563, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.162296, abs1, 1e-6); + EXPECT_NEAR(0.16208433292853708, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.176829, abs2, 1e-6); + EXPECT_NEAR(0.1767575471125484, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp index b7a0ed4c..717f461b 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp @@ -306,7 +306,11 @@ class MultiPaneBSDF_102_PerforatedCircular_NFRC18000 : public testing::Test const auto perforated = CBSDFLayerMaker::getCircularPerforatedLayer( aMaterial_31111, aBSDF, x, y, thickness_31111, radius); - m_Layer = CMultiPaneBSDF::create({perforated, Layer_102}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({perforated, Layer_102}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -326,35 +330,35 @@ TEST_F(MultiPaneBSDF_102_PerforatedCircular_NFRC18000, Test102PerofratedCircular CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.212494, tauDiff, 1e-6); + EXPECT_NEAR(0.21249128345672524, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.635473, rhoDiff, 1e-6); + EXPECT_NEAR(0.63539424553486545, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.125377, absDiff1, 1e-6); + EXPECT_NEAR(0.1254558414581273, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.026656, absDiff2, 1e-6); + EXPECT_NEAR(0.02665862955027334, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.315236, tauHem, 1e-6); + EXPECT_NEAR(0.31523300551099365, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.308729, tauDir, 1e-6); + EXPECT_NEAR(0.30872668074190435, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.543428, rhoHem, 1e-6); + EXPECT_NEAR(0.54336046822785034, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.023285, rhoDir, 1e-6); + EXPECT_NEAR(0.023282859797643073, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.106659, abs1, 1e-6); + EXPECT_NEAR(0.10672566908222603, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.034677, abs2, 1e-6); + EXPECT_NEAR(0.034680857178930609, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp index d0922acf..88faae06 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp @@ -151,7 +151,11 @@ class MultiPaneBSDF_102_PerforatedRectangular : public testing::Test auto Layer_Perforated = CBSDFLayerMaker::getRectangularPerforatedLayer( aMaterialPerforated, aBSDF, x, y, thickness, xHole, yHole); - m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_Perforated}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_Perforated}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -171,56 +175,56 @@ TEST_F(MultiPaneBSDF_102_PerforatedRectangular, Test102PerofratedRectangular) CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.099700, tauDiff, 1e-6); + EXPECT_NEAR(0.101524359542413, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.575668, rhoDiff, 1e-6); + EXPECT_NEAR(0.57409775500740534, rhoDiff, 1e-6); const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.160336, absDiff1, 1e-6); + EXPECT_NEAR(0.16014778424975923, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.164296, absDiff2, 1e-6); + EXPECT_NEAR(0.16423010120042264, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.148293, tauHem, 1e-6); + EXPECT_NEAR(0.15022451046584187, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.058635, tauDir, 1e-6); + EXPECT_NEAR(0.058662078108356219, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.524779, rhoHem, 1e-6); + EXPECT_NEAR(0.52312643664527325, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.081228, rhoDir, 1e-6); + EXPECT_NEAR(0.081149572118629096, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.154011, abs1, 1e-6); + EXPECT_NEAR(0.15380041806320865, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.172916, abs2, 1e-6); + EXPECT_NEAR(0.17284863482567633, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.105820, tauHem, 1e-6); + EXPECT_NEAR(0.10782213267305046, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.031640, tauDir, 1e-6); + EXPECT_NEAR(0.032080963801845518, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.549825, rhoHem, 1e-6); + EXPECT_NEAR(0.54810681015440565, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.194053, rhoDir, 1e-6); + EXPECT_NEAR(0.19359713053900521, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.164372, abs1, 1e-6); + EXPECT_NEAR(0.1641583199415258, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.179984, abs2, 1e-6); + EXPECT_NEAR(0.17991273723101786, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp index af2ad500..d48c13e8 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp @@ -160,7 +160,11 @@ class MultiPaneBSDF_102_VenetianDirectional : public testing::Test DistributionMethod::DirectionalDiffuse, true); - m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_Venetian}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_Venetian}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -180,56 +184,56 @@ TEST_F(MultiPaneBSDF_102_VenetianDirectional, TestBSDF1) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.253442, tauDiff, 1e-6); + EXPECT_NEAR(0.25414300310658694, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.497054, rhoDiff, 1e-6); + EXPECT_NEAR(0.49629331049384251, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.147572, absDiff1, 1e-6); + EXPECT_NEAR(0.14751449884118661, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.101932, absDiff2, 1e-6); + EXPECT_NEAR(0.10204918755838409, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.281306, tauHem, 1e-6); + EXPECT_NEAR(0.28209088986746267, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.050652, tauDir, 1e-6); + EXPECT_NEAR(0.050664394033539749, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.462300, rhoHem, 1e-6); + EXPECT_NEAR(0.46146163268737145, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.080335, rhoDir, 1e-6); + EXPECT_NEAR(0.080267711484466833, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.143183, abs1, 1e-6); + EXPECT_NEAR(0.14310524767491428, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.113210, abs2, 1e-6); + EXPECT_NEAR(0.11334222977025182, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.276474, tauHem, 1e-6); + EXPECT_NEAR(0.27724122923746713, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.096936, tauDir, 1e-6); + EXPECT_NEAR(0.097106723991458727, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.462162, rhoHem, 1e-6); + EXPECT_NEAR(0.46133627836980567, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.172980, rhoDir, 1e-6); + EXPECT_NEAR(0.1727385953319357, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.150144, abs1, 1e-6); + EXPECT_NEAR(0.15007428635427769, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.111219, abs2, 1e-6); + EXPECT_NEAR(0.11134820603844986, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp index 5495aa10..ecd885a7 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp @@ -324,7 +324,11 @@ class MultiPaneBSDF_102_VenetianDirectional_n_Band_Material : public testing::Te DistributionMethod::DirectionalDiffuse, true); - m_Layer = CMultiPaneBSDF::create({Layer_Venetian, Layer_102}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_Venetian, Layer_102}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -344,39 +348,39 @@ TEST_F(MultiPaneBSDF_102_VenetianDirectional_n_Band_Material, TestBSDF1) CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.708676, tauDiff, 1e-6); + EXPECT_NEAR(0.70866902412843158, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.138815, rhoDiff, 1e-6); + EXPECT_NEAR(0.138811067708112, rhoDiff, 1e-6); const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); EXPECT_NEAR(0.056829, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.095680, absDiff2, 1e-6); + EXPECT_NEAR(0.095691167179567854, absDiff2, 1e-6); const double theta = 0; const double phi = 0; const double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.786517, tauHem, 1e-6); + EXPECT_NEAR(0.78651110282631254, tauHem, 1e-6); const double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.781178, tauDir, 1e-6); + EXPECT_NEAR(0.78117221146538485, tauDir, 1e-6); const double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.073785, rhoHem, 1e-6); + EXPECT_NEAR(0.073781478461371161, rhoHem, 1e-6); const double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.065703, rhoDir, 1e-6); + EXPECT_NEAR(0.065699953592542867, rhoDir, 1e-6); const double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); EXPECT_NEAR(0.053395, abs1, 1e-6); const double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.086303, abs2, 1e-6); + EXPECT_NEAR(0.086312654974486591, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp index 5a907995..9e7f075e 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp @@ -158,7 +158,11 @@ class MultiPaneBSDF_102_VenetianUniform : public testing::Test DistributionMethod::UniformDiffuse, true); - m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_Venetian}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_Venetian}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -178,56 +182,56 @@ TEST_F(MultiPaneBSDF_102_VenetianUniform, TestVenetianUniformBSDF) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.220369, tauDiff, 1e-6); + EXPECT_NEAR(0.2209257882290967, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.411629, rhoDiff, 1e-6); + EXPECT_NEAR(0.41116129914919086, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.135850, absDiff1, 1e-6); + EXPECT_NEAR(0.13583371215177426, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.232152, absDiff2, 1e-6); + EXPECT_NEAR(0.23207920046993824, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.244624, tauHem, 1e-6); + EXPECT_NEAR(0.24524833947047037, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.050189, tauDir, 1e-6); + EXPECT_NEAR(0.05019905389794059, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.367336, rhoHem, 1e-6); + EXPECT_NEAR(0.3668225945080702, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.078981, rhoDir, 1e-6); + EXPECT_NEAR(0.078919326577673199, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.130046, abs1, 1e-6); + EXPECT_NEAR(0.13001467628181293, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.257994, abs2, 1e-6); + EXPECT_NEAR(0.2579143897396467, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.240404, tauHem, 1e-6); + EXPECT_NEAR(0.24101437831537334, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.089103, tauDir, 1e-6); + EXPECT_NEAR(0.089239539722106562, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.368923, rhoHem, 1e-6); + EXPECT_NEAR(0.36841652347249959, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.150587, rhoDir, 1e-6); + EXPECT_NEAR(0.15042233585170436, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.137314, abs1, 1e-6); + EXPECT_NEAR(0.13729019344357293, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.253358, abs2, 1e-6); + EXPECT_NEAR(0.25327890476855441, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp index 55c5b5e7..522ad270 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp @@ -221,8 +221,11 @@ class MultiPaneBSDF_102_VenetianUniformMultiWL : public testing::Test auto commonWavelengths = aVenetian->getBandWavelengths(); - m_Layer = CMultiPaneBSDF::create( - {Layer_102, aVenetian}, loadSolarRadiationFile(), commonWavelengths); + m_Layer = CMultiPaneBSDF::create({Layer_102, aVenetian}, commonWavelengths); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -247,8 +250,13 @@ TEST_F(MultiPaneBSDF_102_VenetianUniformMultiWL, TestBSDF1) // Front transmittance matrix size_t size = aT.size(); - std::vector correctResults{ - 20.711703, 2.688517, 1.488960, 1.184634, 1.152056, 1.301277, 1.147837}; + std::vector correctResults{20.704876361082952, + 2.6876261056026207, + 1.4884587821243103, + 1.184224847758828, + 1.1516440264754242, + 1.3007908721969141, + 1.1473327594840519}; EXPECT_EQ(correctResults.size(), aT.size()); @@ -260,7 +268,13 @@ TEST_F(MultiPaneBSDF_102_VenetianUniformMultiWL, TestBSDF1) // Back Reflectance matrix SquareMatrix aRb = aLayer.getMatrix(minLambda, maxLambda, Side::Back, PropertySimple::R); - correctResults = {1.860160, 0.241743, 0.136151, 0.118147, 0.153253, 0.343395, 1.685370}; + correctResults = {1.8592983854164531, + 0.24163057657322592, + 0.13608742192145262, + 0.11809363568173475, + 0.15319382630343492, + 0.34329561288490762, + 1.6850908192028509}; EXPECT_EQ(correctResults.size(), aRb.size()); for(size_t i = 0; i < size; ++i) @@ -271,7 +285,13 @@ TEST_F(MultiPaneBSDF_102_VenetianUniformMultiWL, TestBSDF1) // Front absorptance layer 1 auto aAbsF = aLayer.Abs(minLambda, maxLambda, Side::Front, 1); - correctResults = {0.091437, 0.092376, 0.095159, 0.099608, 0.105110, 0.109811, 0.104010}; + correctResults = {0.091741474208008794, + 0.092681337861886426, + 0.095467541364117794, + 0.099922354300501642, + 0.10542702702814911, + 0.11012252597234512, + 0.10425307616990795}; EXPECT_EQ(correctResults.size(), aAbsF.size()); for(size_t i = 0; i < size; ++i) @@ -293,7 +313,13 @@ TEST_F(MultiPaneBSDF_102_VenetianUniformMultiWL, TestBSDF1) // Back absorptance layer 1 auto aAbsB = aLayer.Abs(minLambda, maxLambda, Side::Back, 1); - correctResults = {0.091270, 0.092209, 0.094991, 0.099438, 0.104933, 0.109629, 0.103849}; + correctResults = {0.091579680636289171, + 0.092519510646167868, + 0.095305151046115769, + 0.099757516080865291, + 0.10525646069344624, + 0.10994564072275897, + 0.10409705446127393}; EXPECT_EQ(correctResults.size(), aAbsB.size()); for(size_t i = 0; i < size; ++i) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp index 8574c5b6..f3a1c80b 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp @@ -147,7 +147,11 @@ class MultiPaneBSDF_102_Woven : public testing::Test // Perforated layer is created here auto LayerWoven = CBSDFLayerMaker::getWovenLayer(aMaterial, aBSDF, diameter, spacing); - m_Layer = CMultiPaneBSDF::create({Layer_102, LayerWoven}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_102, LayerWoven}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -167,56 +171,56 @@ TEST_F(MultiPaneBSDF_102_Woven, TestWovenShade) CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.336759, tauDiff, 1e-6); + EXPECT_NEAR(0.33780133084765407, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.412744, rhoDiff, 1e-6); + EXPECT_NEAR(0.41182668343004841, rhoDiff, 1e-6); const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.137561, absDiff1, 1e-6); + EXPECT_NEAR(0.13746735103813759, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.112936, absDiff2, 1e-6); + EXPECT_NEAR(0.11290463468415772, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.445302, tauHem, 1e-6); + EXPECT_NEAR(0.44632165813418462, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.372486, tauDir, 1e-6); + EXPECT_NEAR(0.3725259302754636, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.326722, rhoHem, 1e-6); + EXPECT_NEAR(0.32583184121375314, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.081716, rhoDir, 1e-6); + EXPECT_NEAR(0.081637649190777636, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.126611, abs1, 1e-6); + EXPECT_NEAR(0.12651120976869337, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.101365, abs2, 1e-6); + EXPECT_NEAR(0.10133529088336915, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.400527, tauHem, 1e-6); + EXPECT_NEAR(0.40161715702473694, tauHem, 1e-6); tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.305015, tauDir, 1e-6); + EXPECT_NEAR(0.30505230954589441, tauDir, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.350088, rhoHem, 1e-6); + EXPECT_NEAR(0.34913451518897831, rhoHem, 1e-6); rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.086697, rhoDir, 1e-6); + EXPECT_NEAR(0.086616800052442072, rhoDir, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.136082, abs1, 1e-6); + EXPECT_NEAR(0.13597871760340824, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.113302, abs2, 1e-6); + EXPECT_NEAR(0.11326961018287605, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index 81365f3e..45fc43f0 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -300,7 +300,11 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test // Perforated layer is created here auto LayerWoven = CBSDFLayerMaker::getWovenLayer(aWovenMaterial, aBSDF, diameter, spacing); - m_Layer = CMultiPaneBSDF::create({LayerWoven, Layer_102}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({LayerWoven, Layer_102}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -323,36 +327,36 @@ TEST_F(MultiPaneBSDF_102_Woven_n_BandMaterial, TestWovenShade) EXPECT_NEAR(0.13484889575042058, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.5661722609648232, rhoDiff, 1e-6); + EXPECT_NEAR(0.56618660131592768, rhoDiff, 1e-6); const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.28265135446851702, absDiff1, 1e-6); + EXPECT_NEAR(0.28263551018831601, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.016327488816241579, absDiff2, 1e-6); + EXPECT_NEAR(0.016329671229861488, absDiff2, 1e-6); const double theta = 0; const double phi = 0; const double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.2210247634178821, tauHem, 1e-6); + EXPECT_NEAR(0.22102289250670637, tauHem, 1e-6); const double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.20880579937979679, tauDir, 1e-6); + EXPECT_NEAR(0.20880417866124168, tauDir, 1e-6); const double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.51171129367143786, rhoHem, 1e-6); + EXPECT_NEAR(0.51172408586557705, rhoHem, 1e-6); const double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); EXPECT_NEAR(0.017084421624025157, rhoDir, 1e-6); const double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.24287076469501989, abs1, 1e-6); + EXPECT_NEAR(0.24285700879406391, abs1, 1e-6); const double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.024393178215660453, abs2, 1e-6); + EXPECT_NEAR(0.024396012833652843, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp index 2adda2a8..eec98b85 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp @@ -361,16 +361,11 @@ class MultiPaneBSDF_20243_103 : public testing::Test auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_20243 = CBSDFLayerMaker::getSpecularLayer(aMaterial_20243, aBSDF); - // To assure interpolation to common wavelengths. MultiBSDF will NOT work with different - // wavelengths - CCommonWavelengths aCommonWL; - aCommonWL.addWavelength(Layer_102->getBandWavelengths()); - aCommonWL.addWavelength(Layer_20243->getBandWavelengths()); + m_Layer = CMultiPaneBSDF::create({Layer_20243, Layer_102}); - const auto commonWavelengths = aCommonWL.getCombinedWavelengths(Combine::Interpolate); - - m_Layer = CMultiPaneBSDF::create( - {Layer_20243, Layer_102}, loadSolarRadiationFile(), commonWavelengths); + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -390,50 +385,50 @@ TEST_F(MultiPaneBSDF_20243_103, TestSpecular1) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.000164, tauDiff, 1e-6); + EXPECT_NEAR(0.00021851943605472038, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.179067, rhoDiff, 1e-6); + EXPECT_NEAR(0.17938334436247161, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.820757, absDiff1, 1e-6); + EXPECT_NEAR(0.82037742417864912, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.0000116, absDiff2, 1e-6); + EXPECT_NEAR(0.0000207, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.000327, tauHem, 1e-6); + EXPECT_NEAR(0.00043396730130541584, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.000327, tauDir, 1e-6); + EXPECT_NEAR(0.00043396730130541584, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.131407, rhoHem, 1e-6); + EXPECT_NEAR(0.13176923275670094, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.131407, rhoDir, 1e-6); + EXPECT_NEAR(0.13176923275670094, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.868248, abs1, 1e-6); + EXPECT_NEAR(0.86776218584464693, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.000019, abs2, 1e-6); + EXPECT_NEAR(0.000035, abs2, 1e-6); theta = 45; phi = 78; tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.000205, tauHem, 1e-6); + EXPECT_NEAR(0.00027458805047742208, tauHem, 1e-6); rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.134284, rhoHem, 1e-6); + EXPECT_NEAR(0.13464311997341968, rhoHem, 1e-6); abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.865498, abs1, 1e-6); + EXPECT_NEAR(0.86505762485949012, abs1, 1e-6); abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.000013, abs2, 1e-6); + EXPECT_NEAR(0.000025, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp index 4d83d69e..d8487f2b 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp @@ -70,7 +70,12 @@ class MultiPaneBSDF_Woven_IR : public testing::Test // Perforated layer is created here const auto LayerWoven{CBSDFLayerMaker::getWovenLayer(aMaterial, aBSDF, diameter, spacing)}; - m_Layer = CMultiPaneBSDF::create({LayerWoven}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({LayerWoven}); + + // Need to update correct solar radiation table. This one will not produce results since it is out of range + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: diff --git a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp index 7c9a1e74..8187eee1 100644 --- a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp @@ -1810,7 +1810,11 @@ class MultiPanePhotovoltaicBSDF_SmallBasis : public testing::Test const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_1 = CBSDFLayerMaker::getPhotovoltaicSpecularLayer(aMaterial_1, aBSDF, table()); - m_Layer = CMultiPaneBSDF::create({Layer_1}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_1}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -1833,16 +1837,16 @@ TEST_F(MultiPanePhotovoltaicBSDF_SmallBasis, TestSpecular1) const auto phi{0}; const double abs1{aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi)}; - EXPECT_NEAR(0.777067, abs1, 1e-6); + EXPECT_NEAR(0.77708465456652798, abs1, 1e-6); const double absHeat1{aLayer.AbsHeat(minLambda, maxLambda, Side::Front, 1, theta, phi)}; - EXPECT_NEAR(0.670592, absHeat1, 1e-6); + EXPECT_NEAR(0.67084210141480705, absHeat1, 1e-6); const double absElectricFront1{ aLayer.AbsElectricity(minLambda, maxLambda, Side::Front, 1, theta, phi)}; - EXPECT_NEAR(0.106475, absElectricFront1, 1e-6); + EXPECT_NEAR(0.10624255315172096, absElectricFront1, 1e-6); const double absElectricBack1{ aLayer.AbsElectricity(minLambda, maxLambda, Side::Back, 1, theta, phi)}; - EXPECT_NEAR(0.045355, absElectricBack1, 1e-6); + EXPECT_NEAR(0.045253845152651906, absElectricBack1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp index 59e8b004..645b21a7 100644 --- a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp @@ -1833,7 +1833,11 @@ class MultiPanePhotovoltaicBSDF_SmallBasis_Condensed : public testing::Test const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_1 = CBSDFLayerMaker::getPhotovoltaicSpecularLayer(aMaterial_1, aBSDF, table()); - m_Layer = CMultiPaneBSDF::create({Layer_1}, loadSolarRadiationFile()); + m_Layer = CMultiPaneBSDF::create({Layer_1}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -1856,16 +1860,16 @@ TEST_F(MultiPanePhotovoltaicBSDF_SmallBasis_Condensed, TestSpecular1) const auto phi{0}; const double abs1{aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi)}; - EXPECT_NEAR(0.77771, abs1, 1e-6); + EXPECT_NEAR(0.77644968432662831, abs1, 1e-6); const double absHeat1{aLayer.AbsHeat(minLambda, maxLambda, Side::Front, 1, theta, phi)}; - EXPECT_NEAR(0.673905, absHeat1, 1e-6); + EXPECT_NEAR(0.67128461694557817, absHeat1, 1e-6); const double absElectricFront1{ aLayer.AbsElectricity(minLambda, maxLambda, Side::Front, 1, theta, phi)}; - EXPECT_NEAR(0.103805, absElectricFront1, 1e-6); + EXPECT_NEAR(0.10516506738105015, absElectricFront1, 1e-6); const double absElectricBack1{ aLayer.AbsElectricity(minLambda, maxLambda, Side::Back, 1, theta, phi)}; - EXPECT_NEAR(0.043832, absElectricBack1, 1e-6); + EXPECT_NEAR(0.044782428030771371, absElectricBack1, 1e-6); } From c6ea4f3151ca2a850fc28808561625d648e81ee8 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 29 Jul 2022 16:47:26 -0700 Subject: [PATCH 29/81] Only Woven IR case is not working. (Probably due to incorrect spectral data in the source) --- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 17 ++++++++++- src/MultiLayerOptics/src/MultiPaneBSDF.hpp | 2 ++ .../MultiPaneBSDF_102_103_Visible.unit.cpp | 25 +++++++--------- ...aneBSDF_102_PerfectDiffuseVisible.unit.cpp | 29 ++++++++++--------- ...ltiPaneBSDF_BSDFMaterial_Photopic.unit.cpp | 6 +++- 5 files changed, 48 insertions(+), 31 deletions(-) diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index f32fd402..47ab748a 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -29,6 +29,21 @@ namespace MultiLayerOptics DetectorData(std::move(detectorData)) {} + FenestrationCommon::CSeries CalculationProperties::scaledSolarRadiation() const + { + FenestrationCommon::CSeries result{SolarRadiation}; + if(CommonWavelengths.has_value()) + { + result = result.interpolate(CommonWavelengths.value()); + } + + if(DetectorData.has_value()) + { + result = result * DetectorData.value().interpolate(result.getXArray()); + } + return result; + } + CMultiPaneBSDF::CMultiPaneBSDF(const std::vector> & t_Layer, const std::optional> & matrixWavelengths) : m_EquivalentLayer(t_Layer, matrixWavelengths), @@ -599,7 +614,7 @@ namespace MultiLayerOptics this->m_IncomingSpectra = std::vector(directionsSize); for(size_t i = 0; i < directionsSize; ++i) { - this->m_IncomingSpectra[i] = calcProperties.SolarRadiation; + this->m_IncomingSpectra[i] = calcProperties.scaledSolarRadiation(); } m_SpectralIntegrationWavelengths = calcProperties.CommonWavelengths; } diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp index cac719b3..021f1948 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp @@ -33,6 +33,8 @@ namespace MultiLayerOptics FenestrationCommon::CSeries SolarRadiation; std::optional> CommonWavelengths; std::optional DetectorData; + + FenestrationCommon::CSeries scaledSolarRadiation() const; }; class CMultiPaneBSDF : public SingleLayerOptics::IScatteringLayer diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp index 92007a59..4df845de 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp @@ -221,16 +221,11 @@ class MultiPaneBSDF_102_103_Visible : public testing::Test auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); auto Layer_103 = CBSDFLayerMaker::getSpecularLayer(aMaterial_103, aBSDF); - // To assure interpolation to common wavelengths. MultiBSDF will NOT work with different - // wavelengths - CCommonWavelengths aCommonWL; - aCommonWL.addWavelength(Layer_102->getBandWavelengths()); - aCommonWL.addWavelength(Layer_103->getBandWavelengths()); + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_103}); - auto commonWavelengths = aCommonWL.getCombinedWavelengths(Combine::Interpolate); - - m_Layer = CMultiPaneBSDF::create( - {Layer_102, Layer_103}, loadSolarRadiationFile(), getDetectorData(), commonWavelengths); + const CalculationProperties input{ + loadSolarRadiationFile(), loadSolarRadiationFile().getXArray(), getDetectorData()}; + m_Layer->setCalculationProperties(input); } public: @@ -250,23 +245,23 @@ TEST_F(MultiPaneBSDF_102_103_Visible, TestSpecular1) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.683573, tauDiff, 1e-6); + EXPECT_NEAR(0.68373480873788872, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.257077, rhoDiff, 1e-6); + EXPECT_NEAR(0.2570179960726518, rhoDiff, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.798524, tauHem, 1e-6); + EXPECT_NEAR(0.79870712315094994, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.798524, tauDir, 1e-6); + EXPECT_NEAR(0.79870712315094994, tauDir, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.147695, rhoHem, 1e-6); + EXPECT_NEAR(0.14760680000245055, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.147695, rhoDir, 1e-6); + EXPECT_NEAR(0.14760680000245055, rhoDir, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp index f38a6011..b3547fee 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp @@ -256,12 +256,13 @@ class MultiPaneBSDF_102_PerfectDiffuse_Visible : public testing::Test auto aMaterial = SingleLayerOptics::Material::dualBandMaterial( Tsol, Tsol, Rfsol, Rbsol, Tvis, Tvis, Rfvis, Rbvis); - aMaterial->setBandWavelengths(wavelengthSet); - auto diffuseLayer = CBSDFLayerMaker::getPerfectlyDiffuseLayer(aMaterial, aBSDF); - m_Layer = CMultiPaneBSDF::create( - {Layer_102, diffuseLayer}, loadSolarRadiationFile(), getDetectorData(), wavelengthSet); + m_Layer = CMultiPaneBSDF::create({Layer_102, diffuseLayer}); + + const CalculationProperties input{ + loadSolarRadiationFile(), loadSolarRadiationFile().getXArray(), getDetectorData()}; + m_Layer->setCalculationProperties(input); } public: @@ -281,39 +282,39 @@ TEST_F(MultiPaneBSDF_102_PerfectDiffuse_Visible, TestPerfectDiffuseBSDFVisible) CMultiPaneBSDF & aLayer = getLayer(); double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.3365838056368104, tauDiff, 1e-6); + EXPECT_NEAR(0.33657875345349131, tauDiff, 1e-6); double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.30272005881985259, rhoDiff, 1e-6); + EXPECT_NEAR(0.30271422929099751, rhoDiff, 1e-6); double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.024112329906520978, absDiff1, 1e-6); + EXPECT_NEAR(0.024128263802016579, absDiff1, 1e-6); double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.33658380563681356, absDiff2, 1e-6); + EXPECT_NEAR(0.33657875345349303, absDiff2, 1e-6); double theta = 0; double phi = 0; double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.37204158261216119, tauHem, 1e-6); + EXPECT_NEAR(0.37203670879226813, tauHem, 1e-6); double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); EXPECT_NEAR(0.0091045055680517902, tauDir, 1e-6); double tauDirDiff = aLayer.DirDiff(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.36293707704410938, tauDirDiff, 1e-6); + EXPECT_NEAR(0.36293232249507862, tauDirDiff, 1e-6); double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.23391286196150513, rhoHem, 1e-6); + EXPECT_NEAR(0.23390789068239645, rhoHem, 1e-6); double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.086657097881533585, rhoDir, 1e-6); + EXPECT_NEAR(0.08665605444634436, rhoDir, 1e-6); double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); - EXPECT_NEAR(0.022003972814172566, abs1, 1e-6); + EXPECT_NEAR(0.022018691733066909, abs1, 1e-6); double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.37204158261216141, abs2, 1e-6); + EXPECT_NEAR(0.3720367087922683, abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp index df3434ee..a3b5aa38 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp @@ -820,7 +820,11 @@ class MultiPaneBSDF_BSDFMaterial_Photopic : public testing::Test auto Layer_BSDF = CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); - m_Layer = CMultiPaneBSDF::create({Layer_BSDF}, getSourceSpectrum(), getDetectorData()); + m_Layer = CMultiPaneBSDF::create({Layer_BSDF}); + + const CalculationProperties input{ + getSourceSpectrum(), fiveNMWavelenths(), getDetectorData()}; + m_Layer->setCalculationProperties(input); } public: From 5529989f1dadbf341db7a30324e21cf0a3d357f4 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Mon, 1 Aug 2022 10:14:20 -0700 Subject: [PATCH 30/81] Spectrum functions are now returning CSeries instead of std::vector> --- ...entSpecularLayer_102_103_IR_Range.unit.cpp | 6 - ...eBSDF_SingleBandMaterial_Woven_IR.unit.cpp | 73 ++++++++++++ .../tst/units/MultiPaneBSDF_Woven_IR.unit.cpp | 105 ------------------ .../src/SpectrumFunctions.cpp | 17 ++- .../src/SpectrumFunctions.hpp | 15 +-- .../tst/units/SpectrumFunctions.unit.cpp | 34 +++--- 6 files changed, 104 insertions(+), 146 deletions(-) create mode 100644 src/MultiLayerOptics/tst/units/MultiPaneBSDF_SingleBandMaterial_Woven_IR.unit.cpp delete mode 100644 src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_IR_Range.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_IR_Range.unit.cpp index ed5b2732..c5fc5bd8 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_IR_Range.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_IR_Range.unit.cpp @@ -86,12 +86,6 @@ class EquivalentSpecularLayer_102_103_IR_Range : public testing::Test TEST_F(EquivalentSpecularLayer_102_103_IR_Range, TestNoAvailableData) { - SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); - - const auto wl = loadSampleData_NFRC_102()->getWavelengths(); - const auto blackBodyTemperature = 300; - const auto sourceData = SpectralAveraging::BlackBodySpectrum(wl, blackBodyTemperature); - const auto minLambda = 5.0; const auto maxLambda = 100.0; diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_SingleBandMaterial_Woven_IR.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_SingleBandMaterial_Woven_IR.unit.cpp new file mode 100644 index 00000000..52a39c88 --- /dev/null +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_SingleBandMaterial_Woven_IR.unit.cpp @@ -0,0 +1,73 @@ +#include +#include + +#include "WCESpectralAveraging.hpp" +#include "WCEMultiLayerOptics.hpp" +#include "WCESingleLayerOptics.hpp" +#include "WCECommon.hpp" + + +using namespace SingleLayerOptics; +using namespace FenestrationCommon; +using namespace SpectralAveraging; +using namespace MultiLayerOptics; + +class MultiPaneBSDF_SingleBandMaterial_Woven_IR : public testing::Test +{ +private: + std::unique_ptr m_Layer; + +protected: + virtual void SetUp() + { + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); + + const auto TIR = 0.0; + const auto RfIR = 0.1; + const auto RbIR = 0.1; + + auto aMaterial = Material::singleBandMaterial(TIR, TIR, RfIR, RbIR, WavelengthRange::IR); + + // make cell geometry + const auto diameter = 0.002; // m + const auto spacing = 0.003; // m + + // Perforated layer is created here + const auto LayerWoven{CBSDFLayerMaker::getWovenLayer(aMaterial, aBSDF, diameter, spacing)}; + + m_Layer = CMultiPaneBSDF::create({LayerWoven}); + + std::vector wl{5, 10, 15, 20, 25, 30, 35, 40, 45, 50, + 55, 60, 65, 70, 75, 80, 85, 90, 95, 100}; + const auto blackBodyTemperature = 300; + const auto sourceData = SpectralAveraging::BlackBodySpectrum(wl, blackBodyTemperature); + + // Need to update correct solar radiation table. This one will not produce results since it + // is out of range + const CalculationProperties input{sourceData, wl}; + m_Layer->setCalculationProperties(input); + } + +public: + CMultiPaneBSDF & getLayer() const + { + return *m_Layer; + }; +}; + +TEST_F(MultiPaneBSDF_SingleBandMaterial_Woven_IR, TestWovenShade) +{ + const double minLambda = 5.0; + const double maxLambda = 100.0; + + CMultiPaneBSDF & aLayer = getLayer(); + + double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); + EXPECT_NEAR(0.037034, tauDiff, 1e-6); + + double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); + EXPECT_NEAR(0.096297, rhoDiff, 1e-6); + + double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); + EXPECT_NEAR(0.866670, absDiff1, 1e-6); +} diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp deleted file mode 100644 index d8487f2b..00000000 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_Woven_IR.unit.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include -#include - -#include "WCESpectralAveraging.hpp" -#include "WCEMultiLayerOptics.hpp" -#include "WCESingleLayerOptics.hpp" -#include "WCECommon.hpp" - - -using namespace SingleLayerOptics; -using namespace FenestrationCommon; -using namespace SpectralAveraging; -using namespace MultiLayerOptics; - -class MultiPaneBSDF_Woven_IR : public testing::Test -{ -private: - std::unique_ptr m_Layer; - - static CSeries loadSolarRadiationFile() - { - // Full ASTM E891-87 Table 1 (Solar radiation) - CSeries aSolarRadiation( - {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, - {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, - {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, - {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, - {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, - {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, - {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, - {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, - {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, - {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, - {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, - {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, - {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, - {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, - {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, - {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, - {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, - {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, - {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, - {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, - {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, - {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, - {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, - {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, - {4.0450, 6.9} - - }); - - return aSolarRadiation; - } - -protected: - virtual void SetUp() - { - const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); - - const auto TIR = 0.0; - const auto RfIR = 0.1; - const auto RbIR = 0.1; - - auto aMaterial = Material::singleBandMaterial(TIR, TIR, RfIR, RbIR, WavelengthRange::IR); - - // make cell geometry - const auto diameter = 0.002; // m - const auto spacing = 0.003; // m - - // Perforated layer is created here - const auto LayerWoven{CBSDFLayerMaker::getWovenLayer(aMaterial, aBSDF, diameter, spacing)}; - - m_Layer = CMultiPaneBSDF::create({LayerWoven}); - - // Need to update correct solar radiation table. This one will not produce results since it is out of range - const CalculationProperties input{loadSolarRadiationFile(), - loadSolarRadiationFile().getXArray()}; - m_Layer->setCalculationProperties(input); - } - -public: - CMultiPaneBSDF & getLayer() const - { - return *m_Layer; - }; -}; - -TEST_F(MultiPaneBSDF_Woven_IR, TestWovenShade) -{ - SCOPED_TRACE("Begin Test: Woven shade - BSDF IR."); - - const double minLambda = 5.0; - const double maxLambda = 100.0; - - CMultiPaneBSDF & aLayer = getLayer(); - - double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.037033896815761802, tauDiff, 1e-6); - - double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.096296610318422418, rhoDiff, 1e-6); - - double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); - EXPECT_NEAR(0.86666949286581452, absDiff1, 1e-6); -} diff --git a/src/SpectralAveraging/src/SpectrumFunctions.cpp b/src/SpectralAveraging/src/SpectrumFunctions.cpp index 452fdbcc..c0f8b8e1 100644 --- a/src/SpectralAveraging/src/SpectrumFunctions.cpp +++ b/src/SpectralAveraging/src/SpectrumFunctions.cpp @@ -3,29 +3,28 @@ #include "SpectrumFunctions.hpp" #include "WCECommon.hpp" -std::vector> +FenestrationCommon::CSeries SpectralAveraging::UVAction(const std::vector & t_data, double a, double b) { - std::vector> result; + FenestrationCommon::CSeries result; for(auto & val : t_data) { double value = std::exp(a - b * val); - result.emplace_back(val, value); + result.addProperty(val, value); } return result; } -std::vector> - SpectralAveraging::Krochmann(const std::vector & t_data) +FenestrationCommon::CSeries SpectralAveraging::Krochmann(const std::vector & t_data) { return UVAction(t_data, 12.28, 25.56); } -std::vector> - SpectralAveraging::BlackBodySpectrum(const std::vector & t_data, double t_temperature) +FenestrationCommon::CSeries SpectralAveraging::BlackBodySpectrum(const std::vector & t_data, + double t_temperature) { - std::vector> result; + FenestrationCommon::CSeries result; const double ev = 1.602e-19; // J @@ -41,7 +40,7 @@ std::vector> / std::pow(lambda * 1e-9, 5); double q1 = 1 / std::expm1(hc / kT / lambda); double energy = C1 * q1; - result.emplace_back(val, energy); + result.addProperty(val, energy); } return result; diff --git a/src/SpectralAveraging/src/SpectrumFunctions.hpp b/src/SpectralAveraging/src/SpectrumFunctions.hpp index 0037c5a7..4ac53ce6 100644 --- a/src/SpectralAveraging/src/SpectrumFunctions.hpp +++ b/src/SpectralAveraging/src/SpectrumFunctions.hpp @@ -1,5 +1,4 @@ -#ifndef WCESPECTRUMFUNCTIONS_H -#define WCESPECTRUMFUNCTIONS_H +#pragma once #include "WCECommon.hpp" #include @@ -7,15 +6,13 @@ namespace SpectralAveraging { /// Input wavelengths are in micrometers - std::vector> + FenestrationCommon::CSeries UVAction(const std::vector & t_data, double a = 3.6, double b = 12.0); /// Input wavelengths are in micrometers - std::vector> Krochmann(const std::vector & t_data); + FenestrationCommon::CSeries Krochmann(const std::vector & t_data); /// Input wavelengths are in micrometers - std::vector> BlackBodySpectrum(const std::vector & t_data, - double t_temperature); -} // namespace SpectralAveraging - -#endif \ No newline at end of file + FenestrationCommon::CSeries BlackBodySpectrum(const std::vector & t_data, + double t_temperature); +} // namespace SpectralAveraging \ No newline at end of file diff --git a/src/SpectralAveraging/tst/units/SpectrumFunctions.unit.cpp b/src/SpectralAveraging/tst/units/SpectrumFunctions.unit.cpp index f5f830dd..0e695ee5 100644 --- a/src/SpectralAveraging/tst/units/SpectrumFunctions.unit.cpp +++ b/src/SpectralAveraging/tst/units/SpectrumFunctions.unit.cpp @@ -28,15 +28,15 @@ TEST_F(TestSpectrumFunctions, TestRatio) auto vector = getInputVector(); auto results = SpectralAveraging::UVAction(vector); - std::vector> correctResults{ + FenestrationCommon::CSeries correctResults{ {0.1, 11.02317638}, {0.2, 3.320116923}, {0.3, 1}, {0.4, 0.301194212}, {0.5, 0.090717953}}; EXPECT_EQ(correctResults.size(), results.size()); for(auto i = 0u; i < correctResults.size(); ++i) { - EXPECT_NEAR(correctResults[i].first, results[i].first, 1e-6); - EXPECT_NEAR(correctResults[i].second, results[i].second, 1e-6); + EXPECT_NEAR(correctResults[i].x(), results[i].x(), 1e-6); + EXPECT_NEAR(correctResults[i].value(), results[i].value(), 1e-6); } } @@ -47,18 +47,18 @@ TEST_F(TestSpectrumFunctions, TestUVKrochmann) auto vector = getInputVector(); auto results = SpectralAveraging::Krochmann(vector); - std::vector> correctResults{{0.1, 16713.967064}, - {0.2, 1297.247512}, - {0.3, 100.6853190}, - {0.4, 7.814648615}, - {0.5, 0.606530660}}; + const FenestrationCommon::CSeries correctResults{{0.1, 16713.967064}, + {0.2, 1297.247512}, + {0.3, 100.6853190}, + {0.4, 7.814648615}, + {0.5, 0.606530660}}; EXPECT_EQ(correctResults.size(), results.size()); for(auto i = 0u; i < correctResults.size(); ++i) { - EXPECT_NEAR(correctResults[i].first, results[i].first, 1e-6); - EXPECT_NEAR(correctResults[i].second, results[i].second, 1e-6); + EXPECT_NEAR(correctResults[i].x(), results[i].x(), 1e-6); + EXPECT_NEAR(correctResults[i].value(), results[i].value(), 1e-6); } } @@ -71,17 +71,17 @@ TEST_F(TestSpectrumFunctions, TestBlackBody) const double BlackBodyTemperature = 300; auto results = SpectralAveraging::BlackBodySpectrum(vector, BlackBodyTemperature); - std::vector> correctResults{{5.0, 1.090913e-010}, - {5.1, 1.192546e-010}, - {5.2, 1.296744e-010}, - {5.3, 1.403053e-010}, - {5.4, 1.511017e-010}}; + const FenestrationCommon::CSeries correctResults{{5.0, 1.090913e-010}, + {5.1, 1.192546e-010}, + {5.2, 1.296744e-010}, + {5.3, 1.403053e-010}, + {5.4, 1.511017e-010}}; EXPECT_EQ(correctResults.size(), results.size()); for(auto i = 0u; i < correctResults.size(); ++i) { - EXPECT_NEAR(correctResults[i].first, results[i].first, 1e-16); - EXPECT_NEAR(correctResults[i].second, results[i].second, 1e-16); + EXPECT_NEAR(correctResults[i].x(), results[i].x(), 1e-16); + EXPECT_NEAR(correctResults[i].value(), results[i].value(), 1e-16); } } From 865d45732715b2e37f945f8b2cbcd3448b76888c Mon Sep 17 00:00:00 2001 From: vidanovic Date: Mon, 1 Aug 2022 15:13:07 -0700 Subject: [PATCH 31/81] Parameter initialization fix in CBSDFLayer --- src/SingleLayerOptics/src/BSDFLayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index 84ebf622..dc6f06a1 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -14,8 +14,8 @@ namespace SingleLayerOptics CBSDFLayer::CBSDFLayer(const std::shared_ptr & t_Cell, const BSDFHemisphere & t_Hemisphere) : m_BSDFHemisphere(t_Hemisphere), - m_Results(m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)), m_Cell(t_Cell), + m_Results(m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)), m_Calculated(false), m_CalculatedWV(false) { From 226a5595f4ef7cef1fdc1117f8f91855962dc3dd Mon Sep 17 00:00:00 2001 From: vidanovic Date: Mon, 1 Aug 2022 15:29:48 -0700 Subject: [PATCH 32/81] calculateWavelengthProperties of CEquivalentBSDFLayer is now using vector instead of ranged numbers --- .../src/EquivalentBSDFLayer.cpp | 21 +++++++------------ .../src/EquivalentBSDFLayer.hpp | 2 +- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 58f5cdbe..df55e7d5 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -143,35 +143,30 @@ namespace MultiLayerOptics } } - // Calculate total transmitted solar per matrix and perform integration over each wavelength - const auto WLsize{m_CombinedLayerWavelengths.size()}; - - calculateWavelengthProperties(numberOfLayers, 0, WLsize); + calculateWavelengthProperties(numberOfLayers, m_CombinedLayerWavelengths); m_Calculated = true; } - void CEquivalentBSDFLayer::calculateWavelengthProperties(size_t const t_NumOfLayers, - size_t const t_Start, - size_t const t_End) + void + CEquivalentBSDFLayer::calculateWavelengthProperties(size_t const t_NumOfLayers, + const std::vector & wavelengths) { - for(auto i = t_Start; i < t_End; ++i) + for(size_t i = 0u; i < wavelengths.size(); ++i) { - const auto curWL = m_CombinedLayerWavelengths[i]; - for(auto aSide : EnumSide()) { for(size_t k = 0; k < t_NumOfLayers; ++k) { m_TotA.at(aSide).addProperties( - k, curWL, m_LayersWL[i].getLayerAbsorptances(k + 1, aSide)); + k, wavelengths[i], m_LayersWL[i].getLayerAbsorptances(k + 1, aSide)); m_TotJSC.at(aSide).addProperties( - k, curWL, m_LayersWL[i].getLayerJSC(k + 1, aSide)); + k, wavelengths[i], m_LayersWL[i].getLayerJSC(k + 1, aSide)); } for(auto aProperty : EnumPropertySimple()) { auto curPropertyMatrix = m_LayersWL[i].getProperty(aSide, aProperty); - m_Tot.at({aSide, aProperty}).addProperties(curWL, curPropertyMatrix); + m_Tot.at({aSide, aProperty}).addProperties(wavelengths[i], curPropertyMatrix); } } } diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index c3d3ff04..f7fc93c7 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -54,7 +54,7 @@ namespace MultiLayerOptics void calculate(); // Wavelength layer per layer calculations - void calculateWavelengthProperties(size_t t_NumOfLayers, size_t t_Start, size_t t_End); + void calculateWavelengthProperties(size_t t_NumOfLayers, const std::vector & wavelengths); void updateWavelengthLayers(SingleLayerOptics::CBSDFLayer & t_Layer); From 17932e4bf912e2821a68d59c1eca6ba272c5ff7c Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Mon, 1 Aug 2022 17:02:35 -0700 Subject: [PATCH 33/81] Absorptance calculations are now done in parallel by using stl for_each algorithm. --- src/Common/src/MatrixSeries.cpp | 2 +- src/Common/src/MatrixSeries.hpp | 2 +- .../src/EquivalentBSDFLayer.cpp | 66 ++++++++++++++++--- .../src/EquivalentBSDFLayer.hpp | 27 +++++++- 4 files changed, 84 insertions(+), 13 deletions(-) diff --git a/src/Common/src/MatrixSeries.cpp b/src/Common/src/MatrixSeries.cpp index e294dc7d..70d18885 100644 --- a/src/Common/src/MatrixSeries.cpp +++ b/src/Common/src/MatrixSeries.cpp @@ -61,7 +61,7 @@ namespace FenestrationCommon } } - void CMatrixSeries::addProperties(const double t_Wavelength, SquareMatrix & t_Matrix) + void CMatrixSeries::addProperties(const double t_Wavelength, const SquareMatrix & t_Matrix) { for(size_t i = 0; i < m_Matrix.size(); ++i) { diff --git a/src/Common/src/MatrixSeries.hpp b/src/Common/src/MatrixSeries.hpp index 969a6908..86e45e78 100644 --- a/src/Common/src/MatrixSeries.hpp +++ b/src/Common/src/MatrixSeries.hpp @@ -27,7 +27,7 @@ namespace FenestrationCommon void addProperties(const size_t i, const double t_Wavelength, const std::vector & t_Values); - void addProperties(const double t_Wavelength, SquareMatrix & t_Matrix); + void addProperties(const double t_Wavelength, const SquareMatrix & t_Matrix); void addSeries(const size_t i, const size_t j, const CSeries & series); diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index df55e7d5..85e46d6f 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "EquivalentBSDFLayer.hpp" #include "EquivalentBSDFLayerSingleBand.hpp" @@ -12,7 +13,8 @@ using namespace FenestrationCommon; namespace MultiLayerOptics { CEquivalentBSDFLayer::CEquivalentBSDFLayer(const std::vector & t_CommonWavelengths) : - m_CombinedLayerWavelengths(t_CommonWavelengths), m_Calculated(false) + m_CombinedLayerWavelengths(t_CommonWavelengths), + m_Calculated(false) {} CEquivalentBSDFLayer::CEquivalentBSDFLayer( @@ -143,30 +145,74 @@ namespace MultiLayerOptics } } - calculateWavelengthProperties(numberOfLayers, m_CombinedLayerWavelengths); + calculateAndStoreWavelengthProperties(numberOfLayers, m_CombinedLayerWavelengths); m_Calculated = true; } - void - CEquivalentBSDFLayer::calculateWavelengthProperties(size_t const t_NumOfLayers, - const std::vector & wavelengths) + void CEquivalentBSDFLayer::calculateAndStoreWavelengthProperties( + size_t const t_NumOfLayers, const std::vector & wavelengths) + { + auto wlData = createWavelengthByWavelengthData(wavelengths); + + calculateWavelengthByWavelengthProperties(t_NumOfLayers, wlData); + + storeWavelengthByWavelengthProperties(t_NumOfLayers, wlData); + } + + std::vector + CEquivalentBSDFLayer::createWavelengthByWavelengthData( + const std::vector & wavelengths) { + std::vector wlData; + for(size_t i = 0u; i < wavelengths.size(); ++i) + { + wlData.emplace_back(wavelengths[i], m_LayersWL[i]); + } + return wlData; + } + + void CEquivalentBSDFLayer::calculateWavelengthByWavelengthProperties( + const size_t t_NumOfLayers, std::vector & wlData) const + { + std::for_each( + std::execution::par_unseq, wlData.begin(), wlData.end(), [&](wavelenghtData & val) { + for(auto aSide : EnumSide()) + { + for(size_t layerNumber = 0; layerNumber < t_NumOfLayers; ++layerNumber) + { + val.totA[{aSide, layerNumber}] = + val.layer.getLayerAbsorptances(layerNumber + 1, aSide); + val.totJSC[{aSide, layerNumber}] = + val.layer.getLayerJSC(layerNumber + 1, aSide); + } + for(auto aProperty : EnumPropertySimple()) + { + val.tot[{aSide, aProperty}] = val.layer.getProperty(aSide, aProperty); + } + } + }); + } + + void CEquivalentBSDFLayer::storeWavelengthByWavelengthProperties( + const size_t t_NumOfLayers, const std::vector & wlData) + { + for(auto & t : wlData) { for(auto aSide : EnumSide()) { - for(size_t k = 0; k < t_NumOfLayers; ++k) + for(size_t layerNumber = 0; layerNumber < t_NumOfLayers; ++layerNumber) { m_TotA.at(aSide).addProperties( - k, wavelengths[i], m_LayersWL[i].getLayerAbsorptances(k + 1, aSide)); + layerNumber, t.wavelength, t.totA.at({aSide, layerNumber})); m_TotJSC.at(aSide).addProperties( - k, wavelengths[i], m_LayersWL[i].getLayerJSC(k + 1, aSide)); + layerNumber, t.wavelength, t.totJSC.at({aSide, layerNumber})); } for(auto aProperty : EnumPropertySimple()) { - auto curPropertyMatrix = m_LayersWL[i].getProperty(aSide, aProperty); - m_Tot.at({aSide, aProperty}).addProperties(wavelengths[i], curPropertyMatrix); + m_Tot.at({aSide, aProperty}) + .addProperties(t.wavelength, t.tot.at({aSide, aProperty})); } } } diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index f7fc93c7..0aa1e23e 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -51,10 +51,27 @@ namespace MultiLayerOptics void setMatrixLayerWavelengths(const std::vector & wavelenghts); private: + struct wavelenghtData + { + wavelenghtData(double wl, CEquivalentBSDFLayerSingleBand & layerWl) : + wavelength(wl), + layer(layerWl) + {} + + double wavelength; + CEquivalentBSDFLayerSingleBand & layer; + std::map, std::vector> totA; + std::map, std::vector> totJSC; + std::map, + FenestrationCommon::SquareMatrix> + tot; + }; + void calculate(); // Wavelength layer per layer calculations - void calculateWavelengthProperties(size_t t_NumOfLayers, const std::vector & wavelengths); + void calculateAndStoreWavelengthProperties(const size_t t_NumOfLayers, + const std::vector & wavelengths); void updateWavelengthLayers(SingleLayerOptics::CBSDFLayer & t_Layer); @@ -86,6 +103,14 @@ namespace MultiLayerOptics std::vector m_CombinedLayerWavelengths; bool m_Calculated; + + void storeWavelengthByWavelengthProperties(const size_t t_NumOfLayers, + const std::vector & wlData); + + void calculateWavelengthByWavelengthProperties(const size_t t_NumOfLayers, + std::vector & wlData) const; + std::vector + createWavelengthByWavelengthData(const std::vector & wavelengths); }; } // namespace MultiLayerOptics From 86d686a0bfd8d673d263aabe6ac1b11fab22dfdd Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Tue, 2 Aug 2022 12:23:13 -0700 Subject: [PATCH 34/81] Multithreading is now active only for MSCV (Still not part of other compilers) --- CMakeLists.txt | 2 +- cmake/WCECompilerFlags.cmake | 1 + src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp | 9 ++++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 590a5ab4..a88fbf8b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -215,4 +215,4 @@ else() endif() -config_compiler_and_linker_wce() +config_compiler_and_linker_wce() \ No newline at end of file diff --git a/cmake/WCECompilerFlags.cmake b/cmake/WCECompilerFlags.cmake index dbc55f1e..1bbe4145 100644 --- a/cmake/WCECompilerFlags.cmake +++ b/cmake/WCECompilerFlags.cmake @@ -39,6 +39,7 @@ ENDIF () if (MSVC AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.11)) # VS 2017 : Disable warnings from from gtest code, using deprecated code related to TR1 add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING) + add_definitions(-DSTL_MULTITHREADING) endif() macro( warning_level_update_wce ) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 85e46d6f..dcb2e324 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -2,7 +2,9 @@ #include #include #include -#include +#ifdef STL_MULTITHREADING +# include +#endif #include "EquivalentBSDFLayer.hpp" #include "EquivalentBSDFLayerSingleBand.hpp" @@ -176,8 +178,13 @@ namespace MultiLayerOptics void CEquivalentBSDFLayer::calculateWavelengthByWavelengthProperties( const size_t t_NumOfLayers, std::vector & wlData) const { +#ifdef STL_MULTITHREADING std::for_each( std::execution::par_unseq, wlData.begin(), wlData.end(), [&](wavelenghtData & val) { +#else + std::for_each( + wlData.begin(), wlData.end(), [&](wavelenghtData & val) { +#endif for(auto aSide : EnumSide()) { for(size_t layerNumber = 0; layerNumber < t_NumOfLayers; ++layerNumber) From 1c88ad11b92a2efbd8cf98cf4a0cb004cf713418 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 09:00:46 -0700 Subject: [PATCH 35/81] Unit test with condensed spectrum and NFRC 102 layer --- ...02_CondensedSpectrum_QuarterBasis.unit.cpp | 214 ++++++++++++++++++ ...DF_102_FullSpectrum_QuarterBasis.unit.cpp} | 9 +- 2 files changed, 219 insertions(+), 4 deletions(-) create mode 100644 src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp rename src/MultiLayerOptics/tst/units/{MultiPaneBSDF_102.unit.cpp => MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp} (97%) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp new file mode 100644 index 00000000..f2282b08 --- /dev/null +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp @@ -0,0 +1,214 @@ +#include +#include + +#include "WCESpectralAveraging.hpp" +#include "WCECommon.hpp" +#include "WCESingleLayerOptics.hpp" +#include "WCEMultiLayerOptics.hpp" + + +using namespace SingleLayerOptics; +using namespace FenestrationCommon; +using namespace SpectralAveraging; +using namespace MultiLayerOptics; + +// Example on how to create multilayer BSDF from specular layers only + +class MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis : public testing::Test +{ +private: + std::unique_ptr m_Layer; + + CSeries loadSolarRadiationFile() + { + // Full ASTM E891-87 Table 1 (Solar radiation) + CSeries aSolarRadiation( + {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, + {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, + {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, + {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, + {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, + {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, + {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, + {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, + {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, + {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, + {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, + {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, + {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, + {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, + {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, + {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, + {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, + {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, + {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, + {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, + {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, + {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, + {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, + {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, + {4.0450, 6.9} + + }); + + return aSolarRadiation; + } + + std::shared_ptr loadSampleData_NFRC_102() + { + auto aMeasurements_102 = CSpectralSampleData::create( + {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, + {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, + {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, + {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, + {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, + {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, + {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, + {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, + {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, + {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, + {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, + {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, + {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, + {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, + {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, + {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, + {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, + {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, + {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, + {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, + {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, + {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, + {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, + {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, + {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, + {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, + {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, + {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, + {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, + {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, + {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, + {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, + {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, + {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, + {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, + {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, + {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, + {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, + {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, + {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, + {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, + {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, + {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, + {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, + {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, + {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, + {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, + {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, + {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, + {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, + {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, + {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, + {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, + {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, + {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, + {2.500, 0.8220, 0.0680, 0.0680}}); + + return aMeasurements_102; + } + +protected: + virtual void SetUp() + { + // Create material from samples + constexpr double thickness = 3.048e-3; // [m] + auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); + auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); + + const std::vector condensed{0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + + m_Layer = CMultiPaneBSDF::create({Layer_102}, condensed); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); + } + +public: + [[nodiscard]] CMultiPaneBSDF & getLayer() const + { + return *m_Layer; + } +}; + +TEST_F(MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis, TestSpecular1) +{ + SCOPED_TRACE("Begin Test: Specular layer - BSDF."); + + constexpr double minLambda = 0.3; + constexpr double maxLambda = 2.5; + + CMultiPaneBSDF & aLayer = getLayer(); + + const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); + EXPECT_NEAR(0.743143, tauDiff, 1e-6); + + const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); + EXPECT_NEAR(0.152746, rhoDiff, 1e-6); + + const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); + EXPECT_NEAR(0.104110, absDiff1, 1e-6); + + double theta = 0; + double phi = 0; + + const auto absDiffFrontElectricity = aLayer.getAbsorptanceLayersElectricity( + minLambda, maxLambda, Side::Front, ScatteringSimple::Diffuse, theta, phi); + EXPECT_NEAR(0.0, absDiffFrontElectricity[0], 1e-6); + + double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.831245, tauHem, 1e-6); + + double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.831245, tauDir, 1e-6); + + double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.074559, rhoHem, 1e-6); + + double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.074559, rhoDir, 1e-6); + + double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); + EXPECT_NEAR(0.094196, abs1, 1e-6); + + theta = 45; + phi = 78; + + tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.819753, tauHem, 1e-6); + + rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.079122, rhoHem, 1e-6); + + abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); + EXPECT_NEAR(0.101126, abs1, 1e-6); +} diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp similarity index 97% rename from src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp index ef58b0dd..042facfe 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp @@ -14,7 +14,7 @@ using namespace MultiLayerOptics; // Example on how to create multilayer BSDF from specular layers only -class MultiPaneBSDF_102 : public testing::Test +class MultiPaneBSDF_102_FullSpectrum_QuarterBasis : public testing::Test { private: std::unique_ptr m_Layer; @@ -124,13 +124,14 @@ class MultiPaneBSDF_102 : public testing::Test constexpr double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); m_Layer = CMultiPaneBSDF::create({Layer_102}); - const CalculationProperties input{loadSolarRadiationFile(), loadSolarRadiationFile().getXArray()}; + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; m_Layer->setCalculationProperties(input); } @@ -141,7 +142,7 @@ class MultiPaneBSDF_102 : public testing::Test } }; -TEST_F(MultiPaneBSDF_102, TestSpecular1) +TEST_F(MultiPaneBSDF_102_FullSpectrum_QuarterBasis, TestSpecular1) { SCOPED_TRACE("Begin Test: Specular layer - BSDF."); From 77328596de3d2e1e47df4542cf4ccfea273d9284 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 09:12:35 -0700 Subject: [PATCH 36/81] Clearing up using statements in NFRC 102 unit tests. --- ...02_CondensedSpectrum_QuarterBasis.unit.cpp | 19 +++++++++++++------ ...SDF_102_FullSpectrum_QuarterBasis.unit.cpp | 19 +++++++++++++------ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp index f2282b08..cac2de88 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp @@ -6,11 +6,11 @@ #include "WCESingleLayerOptics.hpp" #include "WCEMultiLayerOptics.hpp" - -using namespace SingleLayerOptics; -using namespace FenestrationCommon; -using namespace SpectralAveraging; -using namespace MultiLayerOptics; +using MultiLayerOptics::CMultiPaneBSDF; +using FenestrationCommon::CSeries; +using FenestrationCommon::MaterialType; +using FenestrationCommon::WavelengthRange; +using SpectralAveraging::CSpectralSampleData; // Example on how to create multilayer BSDF from specular layers only @@ -120,6 +120,11 @@ class MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis : public testing::Test protected: virtual void SetUp() { + using SingleLayerOptics::BSDFHemisphere; + using SingleLayerOptics::BSDFBasis; + using SingleLayerOptics::CBSDFLayerMaker; + using MultiLayerOptics::CalculationProperties; + // Create material from samples constexpr double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( @@ -162,7 +167,9 @@ class MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis : public testing::Test TEST_F(MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis, TestSpecular1) { - SCOPED_TRACE("Begin Test: Specular layer - BSDF."); + using FenestrationCommon::Side; + using FenestrationCommon::PropertySimple; + using FenestrationCommon::ScatteringSimple; constexpr double minLambda = 0.3; constexpr double maxLambda = 2.5; diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp index 042facfe..3132b6d5 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp @@ -6,11 +6,11 @@ #include "WCESingleLayerOptics.hpp" #include "WCEMultiLayerOptics.hpp" - -using namespace SingleLayerOptics; -using namespace FenestrationCommon; -using namespace SpectralAveraging; -using namespace MultiLayerOptics; +using MultiLayerOptics::CMultiPaneBSDF; +using FenestrationCommon::CSeries; +using FenestrationCommon::MaterialType; +using FenestrationCommon::WavelengthRange; +using SpectralAveraging::CSpectralSampleData; // Example on how to create multilayer BSDF from specular layers only @@ -120,6 +120,11 @@ class MultiPaneBSDF_102_FullSpectrum_QuarterBasis : public testing::Test protected: virtual void SetUp() { + using SingleLayerOptics::BSDFHemisphere; + using SingleLayerOptics::BSDFBasis; + using SingleLayerOptics::CBSDFLayerMaker; + using MultiLayerOptics::CalculationProperties; + // Create material from samples constexpr double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( @@ -144,7 +149,9 @@ class MultiPaneBSDF_102_FullSpectrum_QuarterBasis : public testing::Test TEST_F(MultiPaneBSDF_102_FullSpectrum_QuarterBasis, TestSpecular1) { - SCOPED_TRACE("Begin Test: Specular layer - BSDF."); + using FenestrationCommon::Side; + using FenestrationCommon::PropertySimple; + using FenestrationCommon::ScatteringSimple; constexpr double minLambda = 0.3; constexpr double maxLambda = 2.5; From 9460f806e14d9a9afc6f05588d495fcc49d3871d Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 09:58:40 -0700 Subject: [PATCH 37/81] NFRC 102-103 layer for visible spectrum updated. --- .../MultiPaneBSDF_102_103_Visible.unit.cpp | 267 ------------ ...BSDF_102_103_Visible_QuarterBasis.unit.cpp | 389 ++++++++++++++++++ 2 files changed, 389 insertions(+), 267 deletions(-) delete mode 100644 src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp create mode 100644 src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible_QuarterBasis.unit.cpp diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp deleted file mode 100644 index 4df845de..00000000 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible.unit.cpp +++ /dev/null @@ -1,267 +0,0 @@ -#include -#include - -#include "WCESpectralAveraging.hpp" -#include "WCEMultiLayerOptics.hpp" -#include "WCESingleLayerOptics.hpp" -#include "WCECommon.hpp" - - -using namespace SingleLayerOptics; -using namespace FenestrationCommon; -using namespace SpectralAveraging; -using namespace MultiLayerOptics; - -// Example on how to create multilayer BSDF from specular layers only - -class MultiPaneBSDF_102_103_Visible : public testing::Test -{ -private: - std::unique_ptr m_Layer; - - CSeries loadSolarRadiationFile() - { - // Full ASTM E891-87 Table 1 (Solar radiation) - CSeries aSolarRadiation( - {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, - {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, - {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, - {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, - {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, - {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, - {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, - {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, - {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, - {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, - {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, - {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, - {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, - {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, - {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, - {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, - {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, - {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, - {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, - {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, - {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, - {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, - {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, - {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, - {4.0450, 6.9} - - }); - - return aSolarRadiation; - } - - CSeries getDetectorData() const - { - CSeries detectorData(std::initializer_list>({ - - {0.380, 0.0000}, {0.385, 0.0001}, {0.390, 0.0001}, {0.395, 0.0002}, {0.400, 0.0004}, - {0.405, 0.0006}, {0.410, 0.0012}, {0.415, 0.0022}, {0.420, 0.0040}, {0.425, 0.0073}, - {0.430, 0.0116}, {0.435, 0.0168}, {0.440, 0.0230}, {0.445, 0.0298}, {0.450, 0.0380}, - {0.455, 0.0480}, {0.460, 0.0600}, {0.465, 0.0739}, {0.470, 0.0910}, {0.475, 0.1126}, - {0.480, 0.1390}, {0.485, 0.1693}, {0.490, 0.2080}, {0.495, 0.2586}, {0.500, 0.3230}, - {0.505, 0.4073}, {0.510, 0.5030}, {0.515, 0.6082}, {0.520, 0.7100}, {0.525, 0.7932}, - {0.530, 0.8620}, {0.535, 0.9149}, {0.540, 0.9540}, {0.545, 0.9803}, {0.550, 0.9950}, - {0.555, 1.0000}, {0.560, 0.9950}, {0.565, 0.9786}, {0.570, 0.9520}, {0.575, 0.9154}, - {0.580, 0.8700}, {0.585, 0.8163}, {0.590, 0.7570}, {0.595, 0.6949}, {0.600, 0.6310}, - {0.605, 0.5668}, {0.610, 0.5030}, {0.615, 0.4412}, {0.620, 0.3810}, {0.625, 0.3210}, - {0.630, 0.2650}, {0.635, 0.2170}, {0.640, 0.1750}, {0.645, 0.1382}, {0.650, 0.1070}, - {0.655, 0.0816}, {0.660, 0.0610}, {0.665, 0.0446}, {0.670, 0.0320}, {0.675, 0.0232}, - {0.680, 0.0170}, {0.685, 0.0119}, {0.690, 0.0082}, {0.695, 0.0057}, {0.700, 0.0041}, - {0.705, 0.0029}, {0.710, 0.0021}, {0.715, 0.0015}, {0.720, 0.0010}, {0.725, 0.0007}, - {0.730, 0.0005}, {0.735, 0.0004}, {0.740, 0.0002}, {0.745, 0.0002}, {0.750, 0.0001}, - {0.755, 0.0001}, {0.760, 0.0001}, {0.765, 0.0000}, {0.770, 0.0000}, {0.775, 0.0000}, - {0.780, 0.0000}})); - - return detectorData; - } - - std::shared_ptr loadSampleData_NFRC_102() - { - auto aMeasurements_102 = CSpectralSampleData::create( - {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, - {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, - {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, - {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, - {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, - {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, - {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, - {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, - {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, - {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, - {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, - {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, - {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, - {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, - {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, - {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, - {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, - {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, - {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, - {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, - {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, - {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, - {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, - {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, - {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, - {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, - {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, - {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, - {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, - {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, - {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, - {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, - {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, - {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, - {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, - {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, - {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, - {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, - {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, - {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, - {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, - {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, - {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, - {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, - {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, - {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, - {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, - {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, - {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, - {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, - {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, - {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, - {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, - {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, - {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, - {2.500, 0.8220, 0.0680, 0.0680}}); - - return aMeasurements_102; - } - - std::shared_ptr loadSampleData_NFRC_103() - { - auto aMeasurements_103 = CSpectralSampleData::create( - {{0.300, 0.0000, 0.0470, 0.0490}, {0.305, 0.0050, 0.0470, 0.0490}, - {0.310, 0.0000, 0.0470, 0.0480}, {0.315, 0.0030, 0.0460, 0.0480}, - {0.320, 0.0190, 0.0460, 0.0480}, {0.325, 0.0660, 0.0450, 0.0460}, - {0.330, 0.1600, 0.0450, 0.0470}, {0.335, 0.2940, 0.0490, 0.0500}, - {0.340, 0.4370, 0.0550, 0.0560}, {0.345, 0.5660, 0.0620, 0.0620}, - {0.350, 0.6710, 0.0690, 0.0690}, {0.355, 0.7440, 0.0740, 0.0740}, - {0.360, 0.7930, 0.0780, 0.0780}, {0.365, 0.8220, 0.0800, 0.0800}, - {0.370, 0.8320, 0.0810, 0.0810}, {0.375, 0.8190, 0.0800, 0.0800}, - {0.380, 0.8090, 0.0790, 0.0790}, {0.385, 0.8290, 0.0800, 0.0800}, - {0.390, 0.8530, 0.0820, 0.0820}, {0.395, 0.8680, 0.0830, 0.0830}, - {0.400, 0.8750, 0.0830, 0.0830}, {0.410, 0.8750, 0.0830, 0.0830}, - {0.420, 0.8730, 0.0830, 0.0830}, {0.430, 0.8730, 0.0820, 0.0820}, - {0.440, 0.8730, 0.0820, 0.0820}, {0.450, 0.8800, 0.0820, 0.0820}, - {0.460, 0.8870, 0.0820, 0.0820}, {0.470, 0.8900, 0.0820, 0.0820}, - {0.480, 0.8920, 0.0830, 0.0830}, {0.490, 0.8930, 0.0820, 0.0820}, - {0.500, 0.8940, 0.0820, 0.0820}, {0.510, 0.8950, 0.0820, 0.0820}, - {0.520, 0.8950, 0.0820, 0.0820}, {0.530, 0.8940, 0.0820, 0.0820}, - {0.540, 0.8930, 0.0810, 0.0810}, {0.550, 0.8910, 0.0810, 0.0810}, - {0.560, 0.8880, 0.0810, 0.0810}, {0.570, 0.8840, 0.0800, 0.0800}, - {0.580, 0.8810, 0.0800, 0.0800}, {0.590, 0.8760, 0.0790, 0.0790}, - {0.600, 0.8710, 0.0790, 0.0790}, {0.610, 0.8650, 0.0780, 0.0780}, - {0.620, 0.8590, 0.0770, 0.0770}, {0.630, 0.8530, 0.0770, 0.0770}, - {0.640, 0.8470, 0.0760, 0.0760}, {0.650, 0.8400, 0.0750, 0.0750}, - {0.660, 0.8330, 0.0750, 0.0750}, {0.670, 0.8260, 0.0740, 0.0740}, - {0.680, 0.8180, 0.0730, 0.0730}, {0.690, 0.8100, 0.0730, 0.0730}, - {0.700, 0.8020, 0.0720, 0.0720}, {0.710, 0.7940, 0.0710, 0.0720}, - {0.720, 0.7860, 0.0710, 0.0710}, {0.730, 0.7770, 0.0700, 0.0700}, - {0.740, 0.7690, 0.0690, 0.0700}, {0.750, 0.7610, 0.0690, 0.0690}, - {0.760, 0.7520, 0.0680, 0.0680}, {0.770, 0.7440, 0.0670, 0.0680}, - {0.780, 0.7360, 0.0670, 0.0670}, {0.790, 0.7290, 0.0660, 0.0660}, - {0.800, 0.7220, 0.0660, 0.0660}, {0.810, 0.7150, 0.0650, 0.0660}, - {0.820, 0.7100, 0.0650, 0.0650}, {0.830, 0.7020, 0.0640, 0.0650}, - {0.840, 0.6980, 0.0640, 0.0640}, {0.850, 0.6900, 0.0630, 0.0640}, - {0.860, 0.6870, 0.0650, 0.0650}, {0.870, 0.6810, 0.0670, 0.0670}, - {0.880, 0.6770, 0.0650, 0.0660}, {0.890, 0.6730, 0.0660, 0.0660}, - {0.900, 0.6700, 0.0650, 0.0660}, {0.910, 0.6670, 0.0650, 0.0650}, - {0.920, 0.6640, 0.0640, 0.0640}, {0.930, 0.6600, 0.0630, 0.0630}, - {0.940, 0.6580, 0.0640, 0.0640}, {0.950, 0.6560, 0.0630, 0.0630}, - {0.960, 0.6540, 0.0610, 0.0610}, {0.970, 0.6530, 0.0620, 0.0620}, - {0.980, 0.6510, 0.0610, 0.0620}, {0.990, 0.6490, 0.0610, 0.0620}, - {1.000, 0.6480, 0.0590, 0.0600}, {1.050, 0.6450, 0.0590, 0.0600}, - {1.100, 0.6450, 0.0580, 0.0590}, {1.150, 0.6470, 0.0590, 0.0590}, - {1.200, 0.6530, 0.0590, 0.0590}, {1.250, 0.6610, 0.0580, 0.0590}, - {1.300, 0.6730, 0.0600, 0.0600}, {1.350, 0.6870, 0.0600, 0.0600}, - {1.400, 0.7020, 0.0610, 0.0610}, {1.450, 0.7220, 0.0610, 0.0620}, - {1.500, 0.7410, 0.0630, 0.0640}, {1.550, 0.7570, 0.0630, 0.0640}, - {1.600, 0.7690, 0.0650, 0.0650}, {1.650, 0.7750, 0.0650, 0.0640}, - {1.700, 0.7790, 0.0640, 0.0650}, {1.750, 0.7790, 0.0650, 0.0650}, - {1.800, 0.7770, 0.0650, 0.0650}, {1.850, 0.7760, 0.0650, 0.0630}, - {1.900, 0.7730, 0.0620, 0.0620}, {1.950, 0.7730, 0.0650, 0.0650}, - {2.000, 0.7720, 0.0650, 0.0650}, {2.050, 0.7740, 0.0640, 0.0640}, - {2.100, 0.7750, 0.0640, 0.0650}, {2.150, 0.7730, 0.0650, 0.0650}, - {2.200, 0.7580, 0.0640, 0.0650}, {2.250, 0.7590, 0.0640, 0.0640}, - {2.300, 0.7660, 0.0650, 0.0650}, {2.350, 0.7670, 0.0640, 0.0650}, - {2.400, 0.7660, 0.0640, 0.0640}, {2.450, 0.7570, 0.0640, 0.0640}, - {2.500, 0.7500, 0.0630, 0.0630}}); - - return aMeasurements_103; - } - -protected: - virtual void SetUp() - { - // Create material from samples - auto thickness = 3.048e-3; // [m] - auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - thickness = 5.715e-3; // [m] - auto aMaterial_103 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - - // BSDF definition is needed as well as its material representation - const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); - auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); - auto Layer_103 = CBSDFLayerMaker::getSpecularLayer(aMaterial_103, aBSDF); - - m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_103}); - - const CalculationProperties input{ - loadSolarRadiationFile(), loadSolarRadiationFile().getXArray(), getDetectorData()}; - m_Layer->setCalculationProperties(input); - } - -public: - CMultiPaneBSDF & getLayer() - { - return *m_Layer; - }; -}; - -TEST_F(MultiPaneBSDF_102_103_Visible, TestSpecular1) -{ - SCOPED_TRACE("Begin Test: Specular layer - BSDF."); - - const double minLambda = 0.38; - const double maxLambda = 0.78; - - CMultiPaneBSDF & aLayer = getLayer(); - - double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.68373480873788872, tauDiff, 1e-6); - - double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); - EXPECT_NEAR(0.2570179960726518, rhoDiff, 1e-6); - - double theta = 0; - double phi = 0; - - double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.79870712315094994, tauHem, 1e-6); - - double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.79870712315094994, tauDir, 1e-6); - - double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.14760680000245055, rhoHem, 1e-6); - - double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); - EXPECT_NEAR(0.14760680000245055, rhoDir, 1e-6); -} diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible_QuarterBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible_QuarterBasis.unit.cpp new file mode 100644 index 00000000..3efdb6bf --- /dev/null +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible_QuarterBasis.unit.cpp @@ -0,0 +1,389 @@ +#include +#include + +#include "WCESpectralAveraging.hpp" +#include "WCEMultiLayerOptics.hpp" +#include "WCECommon.hpp" + +using MultiLayerOptics::CMultiPaneBSDF; +using FenestrationCommon::CSeries; +using SpectralAveraging::CSpectralSampleData; + +// Example on how to create multilayer BSDF from specular layers only + +class MultiPaneBSDF_102_103_Visible_QuarterBasis : public testing::Test +{ +private: + std::unique_ptr m_Layer; + + static CSeries loadSolarRadiationFile() + { + // Full CIE Illuminant D651 nm ssp table (used for PHOTOPIC properties) + CSeries solarRadiation( + {{0.300, 0.0341000}, {0.301, 0.3601400}, {0.302, 0.6861800}, {0.303, 1.0122200}, + {0.304, 1.3382600}, {0.305, 1.6643000}, {0.306, 1.9903400}, {0.307, 2.3163800}, + {0.308, 2.6424200}, {0.309, 2.9684600}, {0.310, 3.2945000}, {0.311, 4.9886500}, + {0.312, 6.6828000}, {0.313, 8.3769500}, {0.314, 10.071100}, {0.315, 11.765200}, + {0.316, 13.459400}, {0.317, 15.153500}, {0.318, 16.847700}, {0.319, 18.541800}, + {0.320, 20.236000}, {0.321, 21.917700}, {0.322, 23.599500}, {0.323, 25.281200}, + {0.324, 26.963000}, {0.325, 28.644700}, {0.326, 30.326500}, {0.327, 32.008200}, + {0.328, 33.690000}, {0.329, 35.371700}, {0.330, 37.053500}, {0.331, 37.343000}, + {0.332, 37.632600}, {0.333, 37.922100}, {0.334, 38.211600}, {0.335, 38.501100}, + {0.336, 38.790700}, {0.337, 39.080200}, {0.338, 39.369700}, {0.339, 39.659300}, + {0.340, 39.948800}, {0.341, 40.445100}, {0.342, 40.941400}, {0.343, 41.437700}, + {0.344, 41.934000}, {0.345, 42.430200}, {0.346, 42.926500}, {0.347, 43.422800}, + {0.348, 43.919100}, {0.349, 44.415400}, {0.350, 44.911700}, {0.351, 45.084400}, + {0.352, 45.257000}, {0.353, 45.429700}, {0.354, 45.602300}, {0.355, 45.775000}, + {0.356, 45.947700}, {0.357, 46.120300}, {0.358, 46.293000}, {0.359, 46.465600}, + {0.360, 46.638300}, {0.361, 47.183400}, {0.362, 47.728500}, {0.363, 48.273500}, + {0.364, 48.818600}, {0.365, 49.363700}, {0.366, 49.908800}, {0.367, 50.453900}, + {0.368, 50.998900}, {0.369, 51.544000}, {0.370, 52.089100}, {0.371, 51.877700}, + {0.372, 51.666400}, {0.373, 51.455000}, {0.374, 51.243700}, {0.375, 51.032300}, + {0.376, 50.820900}, {0.377, 50.609600}, {0.378, 50.398200}, {0.379, 50.186900}, + {0.380, 49.975500}, {0.381, 50.442800}, {0.382, 50.910000}, {0.383, 51.377300}, + {0.384, 51.844600}, {0.385, 52.311800}, {0.386, 52.779100}, {0.387, 53.246400}, + {0.388, 53.713700}, {0.389, 54.180900}, {0.390, 54.648200}, {0.391, 57.458900}, + {0.392, 60.269500}, {0.393, 63.080200}, {0.394, 65.890900}, {0.395, 68.701500}, + {0.396, 71.512200}, {0.397, 74.322900}, {0.398, 77.133600}, {0.399, 79.944200}, + {0.400, 82.754900}, {0.401, 83.628000}, {0.402, 84.501100}, {0.403, 85.374200}, + {0.404, 86.247300}, {0.405, 87.120400}, {0.406, 87.993600}, {0.407, 88.866700}, + {0.408, 89.739800}, {0.409, 90.612900}, {0.410, 91.486000}, {0.411, 91.680600}, + {0.412, 91.875200}, {0.413, 92.069700}, {0.414, 92.264300}, {0.415, 92.458900}, + {0.416, 92.653500}, {0.417, 92.848100}, {0.418, 93.042600}, {0.419, 93.237200}, + {0.420, 93.431800}, {0.421, 92.756800}, {0.422, 92.081900}, {0.423, 91.406900}, + {0.424, 90.732000}, {0.425, 90.057000}, {0.426, 89.382100}, {0.427, 88.707100}, + {0.428, 88.032200}, {0.429, 87.357200}, {0.430, 86.682300}, {0.431, 88.500600}, + {0.432, 90.318800}, {0.433, 92.137100}, {0.434, 93.955400}, {0.435, 95.773600}, + {0.436, 97.591900}, {0.437, 99.410200}, {0.438, 101.22800}, {0.439, 103.04700}, + {0.440, 104.86500}, {0.441, 106.07900}, {0.442, 107.29400}, {0.443, 108.50800}, + {0.444, 109.72200}, {0.445, 110.93600}, {0.446, 112.15100}, {0.447, 113.36500}, + {0.448, 114.57900}, {0.449, 115.79400}, {0.450, 117.00800}, {0.451, 117.08800}, + {0.452, 117.16900}, {0.453, 117.24900}, {0.454, 117.33000}, {0.455, 117.41000}, + {0.456, 117.49000}, {0.457, 117.57100}, {0.458, 117.65100}, {0.459, 117.73200}, + {0.460, 117.81200}, {0.461, 117.51700}, {0.462, 117.22200}, {0.463, 116.92700}, + {0.464, 116.63200}, {0.465, 116.33600}, {0.466, 116.04100}, {0.467, 115.74600}, + {0.468, 115.45100}, {0.469, 115.15600}, {0.470, 114.86100}, {0.471, 114.96700}, + {0.472, 115.07300}, {0.473, 115.18000}, {0.474, 115.28600}, {0.475, 115.39200}, + {0.476, 115.49800}, {0.477, 115.60400}, {0.478, 115.71100}, {0.479, 115.81700}, + {0.480, 115.92300}, {0.481, 115.21200}, {0.482, 114.50100}, {0.483, 113.78900}, + {0.484, 113.07800}, {0.485, 112.36700}, {0.486, 111.65600}, {0.487, 110.94500}, + {0.488, 110.23300}, {0.489, 109.52200}, {0.490, 108.81100}, {0.491, 108.86500}, + {0.492, 108.92000}, {0.493, 108.97400}, {0.494, 109.02800}, {0.495, 109.08200}, + {0.496, 109.13700}, {0.497, 109.19100}, {0.498, 109.24500}, {0.499, 109.30000}, + {0.500, 109.35400}, {0.501, 109.19900}, {0.502, 109.04400}, {0.503, 108.88800}, + {0.504, 108.73300}, {0.505, 108.57800}, {0.506, 108.42300}, {0.507, 108.26800}, + {0.508, 108.11200}, {0.509, 107.95700}, {0.510, 107.80200}, {0.511, 107.50100}, + {0.512, 107.20000}, {0.513, 106.89800}, {0.514, 106.59700}, {0.515, 106.29600}, + {0.516, 105.99500}, {0.517, 105.69400}, {0.518, 105.39200}, {0.519, 105.09100}, + {0.520, 104.79000}, {0.521, 105.08000}, {0.522, 105.37000}, {0.523, 105.66000}, + {0.524, 105.95000}, {0.525, 106.23900}, {0.526, 106.52900}, {0.527, 106.81900}, + {0.528, 107.10900}, {0.529, 107.39900}, {0.530, 107.68900}, {0.531, 107.36100}, + {0.532, 107.03200}, {0.533, 106.70400}, {0.534, 106.37500}, {0.535, 106.04700}, + {0.536, 105.71900}, {0.537, 105.39000}, {0.538, 105.06200}, {0.539, 104.73300}, + {0.540, 104.40500}, {0.541, 104.36900}, {0.542, 104.33300}, {0.543, 104.29700}, + {0.544, 104.26100}, {0.545, 104.22500}, {0.546, 104.19000}, {0.547, 104.15400}, + {0.548, 104.11800}, {0.549, 104.08200}, {0.550, 104.04600}, {0.551, 103.64100}, + {0.552, 103.23700}, {0.553, 102.83200}, {0.554, 102.42800}, {0.555, 102.02300}, + {0.556, 101.61800}, {0.557, 101.21400}, {0.558, 100.80900}, {0.559, 100.40500}, + {0.560, 100.00000}, {0.561, 99.633400}, {0.562, 99.266800}, {0.563, 98.900300}, + {0.564, 98.533700}, {0.565, 98.167100}, {0.566, 97.800500}, {0.567, 97.433900}, + {0.568, 97.067400}, {0.569, 96.700800}, {0.570, 96.334200}, {0.571, 96.279600}, + {0.572, 96.225000}, {0.573, 96.170300}, {0.574, 96.115700}, {0.575, 96.061100}, + {0.576, 96.006500}, {0.577, 95.951900}, {0.578, 95.897200}, {0.579, 95.842600}, + {0.580, 95.788000}, {0.581, 95.077800}, {0.582, 94.367500}, {0.583, 93.657300}, + {0.584, 92.947000}, {0.585, 92.236800}, {0.586, 91.526600}, {0.587, 90.816300}, + {0.588, 90.106100}, {0.589, 89.395800}, {0.590, 88.685600}, {0.591, 88.817700}, + {0.592, 88.949700}, {0.593, 89.081800}, {0.594, 89.213800}, {0.595, 89.345900}, + {0.596, 89.478000}, {0.597, 89.610000}, {0.598, 89.742100}, {0.599, 89.874100}, + {0.600, 90.006200}, {0.601, 89.965500}, {0.602, 89.924800}, {0.603, 89.884100}, + {0.604, 89.843400}, {0.605, 89.802600}, {0.606, 89.761900}, {0.607, 89.721200}, + {0.608, 89.680500}, {0.609, 89.639800}, {0.610, 89.599100}, {0.611, 89.409100}, + {0.612, 89.219000}, {0.613, 89.029000}, {0.614, 88.838900}, {0.615, 88.648900}, + {0.616, 88.458900}, {0.617, 88.268800}, {0.618, 88.078800}, {0.619, 87.888700}, + {0.620, 87.698700}, {0.621, 87.257700}, {0.622, 86.816700}, {0.623, 86.375700}, + {0.624, 85.934700}, {0.625, 85.493600}, {0.626, 85.052600}, {0.627, 84.611600}, + {0.628, 84.170600}, {0.629, 83.729600}, {0.630, 83.288600}, {0.631, 83.329700}, + {0.632, 83.370700}, {0.633, 83.411800}, {0.634, 83.452800}, {0.635, 83.493900}, + {0.636, 83.535000}, {0.637, 83.576000}, {0.638, 83.617100}, {0.639, 83.658100}, + {0.640, 83.699200}, {0.641, 83.332000}, {0.642, 82.964700}, {0.643, 82.597500}, + {0.644, 82.230200}, {0.645, 81.863000}, {0.646, 81.495800}, {0.647, 81.128500}, + {0.648, 80.761300}, {0.649, 80.394000}, {0.650, 80.026800}, {0.651, 80.045600}, + {0.652, 80.064400}, {0.653, 80.083100}, {0.654, 80.101900}, {0.655, 80.120700}, + {0.656, 80.139500}, {0.657, 80.158300}, {0.658, 80.177000}, {0.659, 80.195800}, + {0.660, 80.214600}, {0.661, 80.420900}, {0.662, 80.627200}, {0.663, 80.833600}, + {0.664, 81.039900}, {0.665, 81.246200}, {0.666, 81.452500}, {0.667, 81.658800}, + {0.668, 81.865200}, {0.669, 82.071500}, {0.670, 82.277800}, {0.671, 81.878400}, + {0.672, 81.479100}, {0.673, 81.079700}, {0.674, 80.680400}, {0.675, 80.281000}, + {0.676, 79.881600}, {0.677, 79.482300}, {0.678, 79.082900}, {0.679, 78.683600}, + {0.680, 78.284200}, {0.681, 77.427900}, {0.682, 76.571600}, {0.683, 75.715300}, + {0.684, 74.859000}, {0.685, 74.002700}, {0.686, 73.146500}, {0.687, 72.290200}, + {0.688, 71.433900}, {0.689, 70.577600}, {0.690, 69.721300}, {0.691, 69.910100}, + {0.692, 70.098900}, {0.693, 70.287600}, {0.694, 70.476400}, {0.695, 70.665200}, + {0.696, 70.854000}, {0.697, 71.042800}, {0.698, 71.231500}, {0.699, 71.420300}, + {0.700, 71.609100}, {0.701, 71.883100}, {0.702, 72.157100}, {0.703, 72.431100}, + {0.704, 72.705100}, {0.705, 72.979000}, {0.706, 73.253000}, {0.707, 73.527000}, + {0.708, 73.801000}, {0.709, 74.075000}, {0.710, 74.349000}, {0.711, 73.074500}, + {0.712, 71.800000}, {0.713, 70.525500}, {0.714, 69.251000}, {0.715, 67.976500}, + {0.716, 66.702000}, {0.717, 65.427500}, {0.718, 64.153000}, {0.719, 62.878500}, + {0.720, 61.604000}, {0.721, 62.432200}, {0.722, 63.260300}, {0.723, 64.088500}, + {0.724, 64.916600}, {0.725, 65.744800}, {0.726, 66.573000}, {0.727, 67.401100}, + {0.728, 68.229300}, {0.729, 69.057400}, {0.730, 69.885600}, {0.731, 70.405700}, + {0.732, 70.925900}, {0.733, 71.446000}, {0.734, 71.966200}, {0.735, 72.486300}, + {0.736, 73.006400}, {0.737, 73.526600}, {0.738, 74.046700}, {0.739, 74.566900}, + {0.740, 75.087000}, {0.741, 73.937600}, {0.742, 72.788100}, {0.743, 71.638700}, + {0.744, 70.489300}, {0.745, 69.339800}, {0.746, 68.190400}, {0.747, 67.041000}, + {0.748, 65.891600}, {0.749, 64.742100}, {0.750, 63.592700}, {0.751, 61.875200}, + {0.752, 60.157800}, {0.753, 58.440300}, {0.754, 56.722900}, {0.755, 55.005400}, + {0.756, 53.288000}, {0.757, 51.570500}, {0.758, 49.853100}, {0.759, 48.135600}, + {0.760, 46.418200}, {0.761, 48.456900}, {0.762, 50.495600}, {0.763, 52.534400}, + {0.764, 54.573100}, {0.765, 56.611800}, {0.766, 58.650500}, {0.767, 60.689200}, + {0.768, 62.728000}, {0.769, 64.766700}, {0.770, 66.805400}, {0.771, 66.463100}, + {0.772, 66.120900}, {0.773, 65.778600}, {0.774, 65.436400}, {0.775, 65.094100}, + {0.776, 64.751800}, {0.777, 64.409600}, {0.778, 64.067300}, {0.779, 63.725100}, + {0.780, 63.382800}, {0.781, 63.474900}, {0.782, 63.567000}, {0.783, 63.659200}, + {0.784, 63.751300}, {0.785, 63.843400}, {0.786, 63.935500}, {0.787, 64.027600}, + {0.788, 64.119800}, {0.789, 64.211900}, {0.790, 64.304000}, {0.791, 63.818800}, + {0.792, 63.333600}, {0.793, 62.848400}, {0.794, 62.363200}, {0.795, 61.877900}, + {0.796, 61.392700}, {0.797, 60.907500}, {0.798, 60.422300}, {0.799, 59.937100}, + {0.800, 59.451900}, {0.801, 58.702600}, {0.802, 57.953300}, {0.803, 57.204000}, + {0.804, 56.454700}, {0.805, 55.705400}, {0.806, 54.956200}, {0.807, 54.206900}, + {0.808, 53.457600}, {0.809, 52.708300}, {0.810, 51.959000}, {0.811, 52.507200}, + {0.812, 53.055300}, {0.813, 53.603500}, {0.814, 54.151600}, {0.815, 54.699800}, + {0.816, 55.248000}, {0.817, 55.796100}, {0.818, 56.344300}, {0.819, 56.892400}, + {0.820, 57.440600}, {0.821, 57.727800}, {0.822, 58.015000}, {0.823, 58.302200}, + {0.824, 58.589400}, {0.825, 58.876500}, {0.826, 59.163700}, {0.827, 59.450900}, + {0.828, 59.738100}, {0.829, 60.025300}, {0.830, 60.312500}}); + + return solarRadiation; + } + + static CSeries getDetectorData() + { + CSeries detectorData(std::initializer_list>({ + + {0.380, 0.0000}, {0.385, 0.0001}, {0.390, 0.0001}, {0.395, 0.0002}, {0.400, 0.0004}, + {0.405, 0.0006}, {0.410, 0.0012}, {0.415, 0.0022}, {0.420, 0.0040}, {0.425, 0.0073}, + {0.430, 0.0116}, {0.435, 0.0168}, {0.440, 0.0230}, {0.445, 0.0298}, {0.450, 0.0380}, + {0.455, 0.0480}, {0.460, 0.0600}, {0.465, 0.0739}, {0.470, 0.0910}, {0.475, 0.1126}, + {0.480, 0.1390}, {0.485, 0.1693}, {0.490, 0.2080}, {0.495, 0.2586}, {0.500, 0.3230}, + {0.505, 0.4073}, {0.510, 0.5030}, {0.515, 0.6082}, {0.520, 0.7100}, {0.525, 0.7932}, + {0.530, 0.8620}, {0.535, 0.9149}, {0.540, 0.9540}, {0.545, 0.9803}, {0.550, 0.9950}, + {0.555, 1.0000}, {0.560, 0.9950}, {0.565, 0.9786}, {0.570, 0.9520}, {0.575, 0.9154}, + {0.580, 0.8700}, {0.585, 0.8163}, {0.590, 0.7570}, {0.595, 0.6949}, {0.600, 0.6310}, + {0.605, 0.5668}, {0.610, 0.5030}, {0.615, 0.4412}, {0.620, 0.3810}, {0.625, 0.3210}, + {0.630, 0.2650}, {0.635, 0.2170}, {0.640, 0.1750}, {0.645, 0.1382}, {0.650, 0.1070}, + {0.655, 0.0816}, {0.660, 0.0610}, {0.665, 0.0446}, {0.670, 0.0320}, {0.675, 0.0232}, + {0.680, 0.0170}, {0.685, 0.0119}, {0.690, 0.0082}, {0.695, 0.0057}, {0.700, 0.0041}, + {0.705, 0.0029}, {0.710, 0.0021}, {0.715, 0.0015}, {0.720, 0.0010}, {0.725, 0.0007}, + {0.730, 0.0005}, {0.735, 0.0004}, {0.740, 0.0002}, {0.745, 0.0002}, {0.750, 0.0001}, + {0.755, 0.0001}, {0.760, 0.0001}, {0.765, 0.0000}, {0.770, 0.0000}, {0.775, 0.0000}, + {0.780, 0.0000}})); + + return detectorData; + } + + [[nodiscard]] static std::vector color5nm() + { + return {0.38, 0.385, 0.39, 0.395, 0.4, 0.405, 0.41, 0.415, 0.42, 0.425, 0.43, 0.435, + 0.44, 0.445, 0.45, 0.455, 0.46, 0.465, 0.47, 0.475, 0.48, 0.485, 0.49, 0.495, + 0.5, 0.505, 0.51, 0.515, 0.52, 0.525, 0.53, 0.535, 0.54, 0.545, 0.55, 0.555, + 0.56, 0.565, 0.57, 0.575, 0.58, 0.585, 0.59, 0.595, 0.6, 0.605, 0.61, 0.615, + 0.62, 0.625, 0.63, 0.635, 0.64, 0.645, 0.65, 0.655, 0.66, 0.665, 0.67, 0.675, + 0.68, 0.685, 0.69, 0.695, 0.7, 0.705, 0.71, 0.715, 0.72, 0.725, 0.73, 0.735, + 0.74, 0.745, 0.75, 0.755, 0.76, 0.765, 0.77, 0.775, 0.78}; + }; + + static std::shared_ptr loadSampleData_NFRC_102() + { + auto aMeasurements_102 = CSpectralSampleData::create( + {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, + {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, + {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, + {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, + {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, + {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, + {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, + {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, + {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, + {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, + {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, + {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, + {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, + {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, + {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, + {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, + {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, + {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, + {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, + {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, + {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, + {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, + {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, + {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, + {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, + {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, + {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, + {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, + {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, + {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, + {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, + {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, + {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, + {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, + {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, + {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, + {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, + {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, + {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, + {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, + {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, + {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, + {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, + {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, + {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, + {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, + {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, + {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, + {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, + {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, + {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, + {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, + {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, + {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, + {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, + {2.500, 0.8220, 0.0680, 0.0680}}); + + return aMeasurements_102; + } + + static std::shared_ptr loadSampleData_NFRC_103() + { + auto aMeasurements_103 = CSpectralSampleData::create( + {{0.300, 0.0000, 0.0470, 0.0490}, {0.305, 0.0050, 0.0470, 0.0490}, + {0.310, 0.0000, 0.0470, 0.0480}, {0.315, 0.0030, 0.0460, 0.0480}, + {0.320, 0.0190, 0.0460, 0.0480}, {0.325, 0.0660, 0.0450, 0.0460}, + {0.330, 0.1600, 0.0450, 0.0470}, {0.335, 0.2940, 0.0490, 0.0500}, + {0.340, 0.4370, 0.0550, 0.0560}, {0.345, 0.5660, 0.0620, 0.0620}, + {0.350, 0.6710, 0.0690, 0.0690}, {0.355, 0.7440, 0.0740, 0.0740}, + {0.360, 0.7930, 0.0780, 0.0780}, {0.365, 0.8220, 0.0800, 0.0800}, + {0.370, 0.8320, 0.0810, 0.0810}, {0.375, 0.8190, 0.0800, 0.0800}, + {0.380, 0.8090, 0.0790, 0.0790}, {0.385, 0.8290, 0.0800, 0.0800}, + {0.390, 0.8530, 0.0820, 0.0820}, {0.395, 0.8680, 0.0830, 0.0830}, + {0.400, 0.8750, 0.0830, 0.0830}, {0.410, 0.8750, 0.0830, 0.0830}, + {0.420, 0.8730, 0.0830, 0.0830}, {0.430, 0.8730, 0.0820, 0.0820}, + {0.440, 0.8730, 0.0820, 0.0820}, {0.450, 0.8800, 0.0820, 0.0820}, + {0.460, 0.8870, 0.0820, 0.0820}, {0.470, 0.8900, 0.0820, 0.0820}, + {0.480, 0.8920, 0.0830, 0.0830}, {0.490, 0.8930, 0.0820, 0.0820}, + {0.500, 0.8940, 0.0820, 0.0820}, {0.510, 0.8950, 0.0820, 0.0820}, + {0.520, 0.8950, 0.0820, 0.0820}, {0.530, 0.8940, 0.0820, 0.0820}, + {0.540, 0.8930, 0.0810, 0.0810}, {0.550, 0.8910, 0.0810, 0.0810}, + {0.560, 0.8880, 0.0810, 0.0810}, {0.570, 0.8840, 0.0800, 0.0800}, + {0.580, 0.8810, 0.0800, 0.0800}, {0.590, 0.8760, 0.0790, 0.0790}, + {0.600, 0.8710, 0.0790, 0.0790}, {0.610, 0.8650, 0.0780, 0.0780}, + {0.620, 0.8590, 0.0770, 0.0770}, {0.630, 0.8530, 0.0770, 0.0770}, + {0.640, 0.8470, 0.0760, 0.0760}, {0.650, 0.8400, 0.0750, 0.0750}, + {0.660, 0.8330, 0.0750, 0.0750}, {0.670, 0.8260, 0.0740, 0.0740}, + {0.680, 0.8180, 0.0730, 0.0730}, {0.690, 0.8100, 0.0730, 0.0730}, + {0.700, 0.8020, 0.0720, 0.0720}, {0.710, 0.7940, 0.0710, 0.0720}, + {0.720, 0.7860, 0.0710, 0.0710}, {0.730, 0.7770, 0.0700, 0.0700}, + {0.740, 0.7690, 0.0690, 0.0700}, {0.750, 0.7610, 0.0690, 0.0690}, + {0.760, 0.7520, 0.0680, 0.0680}, {0.770, 0.7440, 0.0670, 0.0680}, + {0.780, 0.7360, 0.0670, 0.0670}, {0.790, 0.7290, 0.0660, 0.0660}, + {0.800, 0.7220, 0.0660, 0.0660}, {0.810, 0.7150, 0.0650, 0.0660}, + {0.820, 0.7100, 0.0650, 0.0650}, {0.830, 0.7020, 0.0640, 0.0650}, + {0.840, 0.6980, 0.0640, 0.0640}, {0.850, 0.6900, 0.0630, 0.0640}, + {0.860, 0.6870, 0.0650, 0.0650}, {0.870, 0.6810, 0.0670, 0.0670}, + {0.880, 0.6770, 0.0650, 0.0660}, {0.890, 0.6730, 0.0660, 0.0660}, + {0.900, 0.6700, 0.0650, 0.0660}, {0.910, 0.6670, 0.0650, 0.0650}, + {0.920, 0.6640, 0.0640, 0.0640}, {0.930, 0.6600, 0.0630, 0.0630}, + {0.940, 0.6580, 0.0640, 0.0640}, {0.950, 0.6560, 0.0630, 0.0630}, + {0.960, 0.6540, 0.0610, 0.0610}, {0.970, 0.6530, 0.0620, 0.0620}, + {0.980, 0.6510, 0.0610, 0.0620}, {0.990, 0.6490, 0.0610, 0.0620}, + {1.000, 0.6480, 0.0590, 0.0600}, {1.050, 0.6450, 0.0590, 0.0600}, + {1.100, 0.6450, 0.0580, 0.0590}, {1.150, 0.6470, 0.0590, 0.0590}, + {1.200, 0.6530, 0.0590, 0.0590}, {1.250, 0.6610, 0.0580, 0.0590}, + {1.300, 0.6730, 0.0600, 0.0600}, {1.350, 0.6870, 0.0600, 0.0600}, + {1.400, 0.7020, 0.0610, 0.0610}, {1.450, 0.7220, 0.0610, 0.0620}, + {1.500, 0.7410, 0.0630, 0.0640}, {1.550, 0.7570, 0.0630, 0.0640}, + {1.600, 0.7690, 0.0650, 0.0650}, {1.650, 0.7750, 0.0650, 0.0640}, + {1.700, 0.7790, 0.0640, 0.0650}, {1.750, 0.7790, 0.0650, 0.0650}, + {1.800, 0.7770, 0.0650, 0.0650}, {1.850, 0.7760, 0.0650, 0.0630}, + {1.900, 0.7730, 0.0620, 0.0620}, {1.950, 0.7730, 0.0650, 0.0650}, + {2.000, 0.7720, 0.0650, 0.0650}, {2.050, 0.7740, 0.0640, 0.0640}, + {2.100, 0.7750, 0.0640, 0.0650}, {2.150, 0.7730, 0.0650, 0.0650}, + {2.200, 0.7580, 0.0640, 0.0650}, {2.250, 0.7590, 0.0640, 0.0640}, + {2.300, 0.7660, 0.0650, 0.0650}, {2.350, 0.7670, 0.0640, 0.0650}, + {2.400, 0.7660, 0.0640, 0.0640}, {2.450, 0.7570, 0.0640, 0.0640}, + {2.500, 0.7500, 0.0630, 0.0630}}); + + return aMeasurements_103; + } + +protected: + virtual void SetUp() + { + using FenestrationCommon::MaterialType; + using FenestrationCommon::WavelengthRange; + using SingleLayerOptics::BSDFHemisphere; + using SingleLayerOptics::BSDFBasis; + using SingleLayerOptics::CBSDFLayerMaker; + using MultiLayerOptics::CalculationProperties; + + // Create material from samples + auto thickness = 3.048e-3; // [m] + auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + thickness = 5.715e-3; // [m] + auto aMaterial_103 = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + + // BSDF definition is needed as well as its material representation + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); + auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); + auto Layer_103 = CBSDFLayerMaker::getSpecularLayer(aMaterial_103, aBSDF); + + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_103}, color5nm()); + + const CalculationProperties input{ + loadSolarRadiationFile(), loadSolarRadiationFile().getXArray(), getDetectorData()}; + m_Layer->setCalculationProperties(input); + } + +public: + CMultiPaneBSDF & getLayer() + { + return *m_Layer; + }; +}; + +TEST_F(MultiPaneBSDF_102_103_Visible_QuarterBasis, TestSpecular1) +{ + using FenestrationCommon::Side; + using FenestrationCommon::PropertySimple; + + const double minLambda = 0.38; + const double maxLambda = 0.78; + + CMultiPaneBSDF & aLayer = getLayer(); + + double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); + EXPECT_NEAR(0.685078, tauDiff, 1e-6); + + double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); + EXPECT_NEAR(0.257564, rhoDiff, 1e-6); + + double theta = 0; + double phi = 0; + + double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.800011, tauHem, 1e-6); + + double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.800011, tauDir, 1e-6); + + double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.148032, rhoHem, 1e-6); + + double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.148032, rhoDir, 1e-6); +} From 90a036adb50cf375a6fa0d3bbaae23e716abc5d3 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 10:45:32 -0700 Subject: [PATCH 38/81] Update to XCode version --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 624efbe7..c7ce14b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,12 +36,12 @@ matrix: # XCode 9.1 - env: COMPILER=clang++ BUILD_TYPE=Debug GSL_CXX_STANDARD=11 os: osx - osx_image: xcode9.1 + osx_image: xcode13.4 compiler: clang - env: COMPILER=clang++ BUILD_TYPE=Release GSL_CXX_STANDARD=11 os: osx - osx_image: xcode9.1 + osx_image: xcode13.4 compiler: clang ########################################################################## From 4f8a10041444a263e7c3017fbd92ceb6e0717560 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 10:48:44 -0700 Subject: [PATCH 39/81] Update to MacOS version in workflows --- .github/workflows/mac_release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mac_release.yml b/.github/workflows/mac_release.yml index 7a0745f7..86684152 100644 --- a/.github/workflows/mac_release.yml +++ b/.github/workflows/mac_release.yml @@ -1,4 +1,4 @@ -name: MacOS 10.15 +name: MacOS 12.5 on: [push, pull_request] @@ -12,7 +12,7 @@ jobs: # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - runs-on: macos-10.15 + runs-on: macos-12.5 steps: - uses: actions/checkout@v2 From 5ced439cf16ff5dce034aee4c92f3f66cd1fddb8 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 12:33:09 -0700 Subject: [PATCH 40/81] Removal of the extra functions from CMultiPaneBSDF class --- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 119 --------------------- src/MultiLayerOptics/src/MultiPaneBSDF.hpp | 61 +---------- 2 files changed, 1 insertion(+), 179 deletions(-) diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index 47ab748a..197b24b9 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -56,36 +56,6 @@ namespace MultiLayerOptics m_BSDFDirections(t_Layer[0]->getDirections(BSDFDirection::Incoming)) {} - CMultiPaneBSDF::CMultiPaneBSDF(const std::vector> & t_Layer, - const CSeries & t_SolarRadiation, - const CSeries & t_DetectorData, - const std::vector & t_CommonWavelengths) : - m_EquivalentLayer(t_CommonWavelengths), - m_Results(t_Layer[0]->getDirections(BSDFDirection::Incoming)), - m_Calculated(false), - m_MinLambdaCalculated(0), - m_MaxLambdaCalculated(0), - m_Integrator(IntegrationType::Trapezoidal), - m_NormalizationCoefficient(1) - { - initialize(t_Layer, t_SolarRadiation, t_DetectorData); - } - - CMultiPaneBSDF::CMultiPaneBSDF( - const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const std::vector & t_CommonWavelengths) : - m_EquivalentLayer(t_CommonWavelengths), - m_Results(t_Layer[0]->getDirections(BSDFDirection::Incoming)), - m_Calculated(false), - m_MinLambdaCalculated(0), - m_MaxLambdaCalculated(0), - m_Integrator(IntegrationType::Trapezoidal), - m_NormalizationCoefficient(1) - { - initialize(t_Layer, t_SolarRadiation); - } - void CMultiPaneBSDF::initialize( const std::vector> & t_Layer, const CSeries & t_SolarRadiation, @@ -147,20 +117,6 @@ namespace MultiLayerOptics return result; } - CMultiPaneBSDF::CMultiPaneBSDF( - const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation) : - CMultiPaneBSDF(t_Layer, t_SolarRadiation, getCommonWavelengthsFromLayers(t_Layer)) - {} - - CMultiPaneBSDF::CMultiPaneBSDF( - const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData) : - CMultiPaneBSDF( - t_Layer, t_SolarRadiation, t_DetectorData, getCommonWavelengthsFromLayers(t_Layer)) - {} - SquareMatrix CMultiPaneBSDF::getMatrix(const double minLambda, const double maxLambda, const Side t_Side, @@ -492,78 +448,6 @@ namespace MultiLayerOptics return std::unique_ptr(new CMultiPaneBSDF(t_Layer, matrixWavelengths)); } - std::unique_ptr - CMultiPaneBSDF::create(const std::shared_ptr & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const std::vector & t_CommonWavelengths) - { - // make_shared will not work from private function and it needs to be created this way - return std::unique_ptr( - new CMultiPaneBSDF({t_Layer}, t_SolarRadiation, t_CommonWavelengths)); - } - - std::unique_ptr - CMultiPaneBSDF::create(const std::shared_ptr & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData, - const std::vector & t_CommonWavelengths) - { - return std::unique_ptr( - new CMultiPaneBSDF({t_Layer}, t_SolarRadiation, t_DetectorData, t_CommonWavelengths)); - } - - std::unique_ptr CMultiPaneBSDF::create( - const std::vector> & t_Layers, - const FenestrationCommon::CSeries & t_SolarRadiation, - const std::vector & t_CommonWavelengths) - { - return std::unique_ptr( - new CMultiPaneBSDF(t_Layers, t_SolarRadiation, t_CommonWavelengths)); - } - - std::unique_ptr CMultiPaneBSDF::create( - const std::vector> & t_Layers, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData, - const std::vector & t_CommonWavelengths) - { - return std::unique_ptr( - new CMultiPaneBSDF(t_Layers, t_SolarRadiation, t_DetectorData, t_CommonWavelengths)); - } - - std::unique_ptr - CMultiPaneBSDF::create(const std::shared_ptr & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation) - { - // make_shared will not work from private function so it needs to be created this way - return std::unique_ptr(new CMultiPaneBSDF({t_Layer}, t_SolarRadiation)); - } - - std::unique_ptr - CMultiPaneBSDF::create(const std::shared_ptr & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData) - { - // make_shared will not work from private function so it needs to be created this way - return std::unique_ptr( - new CMultiPaneBSDF({t_Layer}, t_SolarRadiation, t_DetectorData)); - } - - std::unique_ptr CMultiPaneBSDF::create( - const std::vector> & t_Layers, - const FenestrationCommon::CSeries & t_SolarRadiation) - { - return std::unique_ptr(new CMultiPaneBSDF(t_Layers, t_SolarRadiation)); - } - - std::unique_ptr CMultiPaneBSDF::create( - const std::vector> & t_Layers, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData) - { - return std::unique_ptr( - new CMultiPaneBSDF(t_Layers, t_SolarRadiation, t_DetectorData)); - } double CMultiPaneBSDF::getPropertySimple(const double minLambda, const double maxLambda, const FenestrationCommon::PropertySimple t_Property, @@ -593,17 +477,14 @@ namespace MultiLayerOptics } std::vector CMultiPaneBSDF::getWavelengths() const { - // return std::vector(); return m_EquivalentLayer.getCommonWavelengths(); } double CMultiPaneBSDF::getMinLambda() const { - // return 0; return m_EquivalentLayer.getMinLambda(); } double CMultiPaneBSDF::getMaxLambda() const { - // return 0; return m_EquivalentLayer.getMaxLambda(); } diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp index 021f1948..5da24fe8 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp @@ -1,5 +1,4 @@ -#ifndef MULTIBSDFLAYER_H -#define MULTIBSDFLAYER_H +#pragma once #include #include @@ -44,46 +43,6 @@ namespace MultiLayerOptics create(const std::vector> & t_Layer, const std::optional> & matrixWavelengths = std::nullopt); - static std::unique_ptr - create(const std::shared_ptr & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const std::vector & t_CommonWavelengths); - - static std::unique_ptr - create(const std::shared_ptr & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData, - const std::vector & t_CommonWavelengths); - - static std::unique_ptr - create(const std::vector> & t_Layers, - const FenestrationCommon::CSeries & t_SolarRadiation, - const std::vector & t_CommonWavelengths); - - static std::unique_ptr - create(const std::vector> & t_Layers, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData, - const std::vector & t_CommonWavelengths); - - static std::unique_ptr - create(const std::shared_ptr & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation); - - static std::unique_ptr - create(const std::shared_ptr & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData); - - static std::unique_ptr - create(const std::vector> & t_Layers, - const FenestrationCommon::CSeries & t_SolarRadiation); - - static std::unique_ptr - create(const std::vector> & t_Layers, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData); - void setIntegrationType(FenestrationCommon::IntegrationType t_type, double normalizationCoefficient); @@ -257,22 +216,6 @@ namespace MultiLayerOptics const std::vector> & t_Layer, const std::optional> & matrixWavelengths); - CMultiPaneBSDF(const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const std::vector & t_CommonWavelengths); - - CMultiPaneBSDF(const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData, - const std::vector & t_CommonWavelengths); - - CMultiPaneBSDF(const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation); - - CMultiPaneBSDF(const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_DetectorData, - const FenestrationCommon::CSeries & t_SolarRadiation); - void initialize( const std::vector> & t_Layer, const FenestrationCommon::CSeries & t_SolarRadiation, @@ -326,5 +269,3 @@ namespace MultiLayerOptics }; } // namespace MultiLayerOptics - -#endif From f79594bd095511e3cb13490e7e83fbef24b46172 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 12:48:35 -0700 Subject: [PATCH 41/81] MultiPaneBSDF is now using common interface for the results setter --- .../src/CalculationProperties.hpp | 31 ++++++++ src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 71 +++++-------------- src/MultiLayerOptics/src/MultiPaneBSDF.hpp | 34 +-------- 3 files changed, 51 insertions(+), 85 deletions(-) create mode 100644 src/MultiLayerOptics/src/CalculationProperties.hpp diff --git a/src/MultiLayerOptics/src/CalculationProperties.hpp b/src/MultiLayerOptics/src/CalculationProperties.hpp new file mode 100644 index 00000000..cb2c4252 --- /dev/null +++ b/src/MultiLayerOptics/src/CalculationProperties.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include +#include + +#include + +namespace MultiLayerOptics +{ + struct CalculationProperties + { + explicit CalculationProperties( + const FenestrationCommon::CSeries & solarRadiation, + std::optional> commonWavelengths = std::nullopt, + std::optional detectorData = std::nullopt) : + SolarRadiation(solarRadiation), + CommonWavelengths(std::move(commonWavelengths)), + DetectorData(std::move(detectorData)){}; + + FenestrationCommon::CSeries SolarRadiation; + std::optional> CommonWavelengths; + std::optional DetectorData; + + [[nodiscard]] FenestrationCommon::CSeries scaledSolarRadiation() const; + }; + + class MultiPaneCalcluationsSetter + { + virtual void setCalculationProperties(const CalculationProperties & calcProperties) = 0; + }; +} // namespace MultiLayerOptics \ No newline at end of file diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index 197b24b9..dc5287b3 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -9,26 +9,28 @@ #include "EquivalentBSDFLayerSingleBand.hpp" #include "WCESingleLayerOptics.hpp" #include "WCECommon.hpp" +#include "CalculationProperties.hpp" + +using FenestrationCommon::IntegrationType; +using FenestrationCommon::Side; +using FenestrationCommon::Property; +using FenestrationCommon::PropertySimple; +using FenestrationCommon::Scattering; +using FenestrationCommon::ScatteringSimple; +using FenestrationCommon::SquareMatrix; +using FenestrationCommon::CSeries; +using FenestrationCommon::CMatrixSeries; + +using SingleLayerOptics::CBSDFLayer; +using SingleLayerOptics::BSDFDirection; namespace SingleLayerOptics { class PhotovoltaicSpecularBSDFLayer; } -using namespace FenestrationCommon; -using namespace SingleLayerOptics; - namespace MultiLayerOptics { - CalculationProperties::CalculationProperties( - const CSeries & solarRadiation, - std::optional> commonWavelengths, - std::optional detectorData) : - SolarRadiation(solarRadiation), - CommonWavelengths(std::move(commonWavelengths)), - DetectorData(std::move(detectorData)) - {} - FenestrationCommon::CSeries CalculationProperties::scaledSolarRadiation() const { FenestrationCommon::CSeries result{SolarRadiation}; @@ -56,45 +58,6 @@ namespace MultiLayerOptics m_BSDFDirections(t_Layer[0]->getDirections(BSDFDirection::Incoming)) {} - void CMultiPaneBSDF::initialize( - const std::vector> & t_Layer, - const CSeries & t_SolarRadiation, - const CSeries & t_DetectorData) - { - // Detector data needs to be included into solar radiation right away on this place. - auto solarRadiation{t_SolarRadiation}; - if(t_DetectorData.size() > 0) - { - const auto commonWavelengths = solarRadiation.getXArray(); - solarRadiation = solarRadiation * t_DetectorData.interpolate(commonWavelengths); - } - m_SolarRadiationInit = solarRadiation; - for(Side aSide : EnumSide()) - { - this->m_AbsHem[aSide] = std::vector(); - this->m_AbsHemElectricity[aSide] = std::vector(); - } - - // This will initialize layer material data with given spectral distribution - this->m_EquivalentLayer.setSolarRadiation(this->m_SolarRadiationInit); - - size_t directionsSize = t_Layer[0]->getDirections(BSDFDirection::Incoming).size(); - this->m_IncomingSolar.resize(directionsSize); - - // For blank incoming spectra, defaults needs to be filled into - this->m_IncomingSpectra = std::vector(directionsSize); - for(size_t i = 0; i < directionsSize; ++i) - { - this->m_IncomingSpectra[i] = solarRadiation; - } - - // First layer has already been added. Must skip it here - for(size_t j = 0u; j < t_Layer.size(); ++j) - { - this->addLayer(t_Layer[j]); - } - } - std::vector> CMultiPaneBSDF::calcPVLayersElectricity(const std::vector> & jsc, const std::vector & incomingSolar) @@ -167,7 +130,7 @@ namespace MultiLayerOptics // Produce local results matrices for each side and property std::map, SquareMatrix> aResults; - for(Side aSide : EnumSide()) + for(Side aSide : FenestrationCommon::EnumSide()) { CMatrixSeries aTotalA = m_EquivalentLayer.getTotalA(aSide); // Calculates absorbed energy in every layer for every wavelength @@ -199,7 +162,7 @@ namespace MultiLayerOptics // Default absorbed electricity is set to zero m_AbsElectricity[aSide] = calcPVLayersElectricity(jscWithSolar, m_IncomingSolar); - for(PropertySimple aProprerty : EnumPropertySimple()) + for(PropertySimple aProprerty : FenestrationCommon::EnumPropertySimple()) { CMatrixSeries aTot = m_EquivalentLayer.getTotal(aSide, aProprerty); if(m_SpectralIntegrationWavelengths.has_value()) @@ -220,7 +183,7 @@ namespace MultiLayerOptics } // calculate hemispherical absorptances - for(const Side aSide : EnumSide()) + for(const Side aSide : FenestrationCommon::EnumSide()) { calcHemisphericalAbs(aSide); } diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp index 5da24fe8..d4cccc34 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp @@ -7,36 +7,13 @@ #include #include "EquivalentBSDFLayer.hpp" - -namespace FenestrationCommon -{ - class CSeries; - - class SquareMatrix; - - enum class Side; - enum class PropertySimple; - -} // namespace FenestrationCommon +#include "CalculationProperties.hpp" namespace MultiLayerOptics { class CEquivalentBSDFLayer; - struct CalculationProperties - { - CalculationProperties( - const FenestrationCommon::CSeries & solarRadiation, - std::optional> commonWavelengths = std::nullopt, - std::optional detectorData = std::nullopt); - FenestrationCommon::CSeries SolarRadiation; - std::optional> CommonWavelengths; - std::optional DetectorData; - - FenestrationCommon::CSeries scaledSolarRadiation() const; - }; - - class CMultiPaneBSDF : public SingleLayerOptics::IScatteringLayer + class CMultiPaneBSDF : public SingleLayerOptics::IScatteringLayer, public MultiPaneCalcluationsSetter { public: static std::unique_ptr @@ -209,18 +186,13 @@ namespace MultiLayerOptics [[nodiscard]] double getMinLambda() const override; [[nodiscard]] double getMaxLambda() const override; - void setCalculationProperties(const CalculationProperties & calcProperties); + void setCalculationProperties(const CalculationProperties & calcProperties) override; protected: explicit CMultiPaneBSDF( const std::vector> & t_Layer, const std::optional> & matrixWavelengths); - void initialize( - const std::vector> & t_Layer, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData = FenestrationCommon::CSeries()); - std::vector> calcPVLayersElectricity(const std::vector> & jsc, const std::vector & incomingSolar); From 31e5e3ad4a95313fb34fcfb25c71fad6f9594d5c Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 12:53:55 -0700 Subject: [PATCH 42/81] CMultiPaneBSDF no longer have addLayer function --- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 6 ------ src/MultiLayerOptics/src/MultiPaneBSDF.hpp | 2 -- 2 files changed, 8 deletions(-) diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index dc5287b3..bddc0263 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -398,12 +398,6 @@ namespace MultiLayerOptics m_Integrator = t_type; } - void CMultiPaneBSDF::addLayer(const std::shared_ptr & t_Layer) - { - m_EquivalentLayer.addLayer(t_Layer); - m_EquivalentLayer.setSolarRadiation(m_SolarRadiationInit); - } - std::unique_ptr CMultiPaneBSDF::create( const std::vector> & t_Layer, const std::optional> & matrixWavelengths) diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp index d4cccc34..42f562a3 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.hpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.hpp @@ -23,8 +23,6 @@ namespace MultiLayerOptics void setIntegrationType(FenestrationCommon::IntegrationType t_type, double normalizationCoefficient); - void addLayer(const std::shared_ptr & t_Layer); - // Whole matrix results FenestrationCommon::SquareMatrix getMatrix(double minLambda, double maxLambda, From 2d526960720bcb0b2861f90f3aacce59a86b16c2 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Wed, 3 Aug 2022 15:47:17 -0700 Subject: [PATCH 43/81] CMultiPaneSpecular is refactored to the new interface --- .../src/CalculationProperties.cpp | 27 + .../src/CalculationProperties.hpp | 5 +- src/MultiLayerOptics/src/MultiPaneBSDF.cpp | 15 - .../src/MultiPaneSpecular.cpp | 118 ++- .../src/MultiPaneSpecular.hpp | 65 +- ...tSpecularAngularDualLayer_102_103.unit.cpp | 6 +- ...alentSpecularAngularLayer_102_103.unit.cpp | 898 ------------------ ...pecular_102_103_CondensedSpectrum.unit.cpp | 289 ++++++ ... MultiPaneSpecular_102_103_EN410.unit.cpp} | 17 +- ...aneSpecular_102_103_FullSpectrum.unit.cpp} | 147 ++- ...ltiPaneSpecular_102_103_IR_Range.unit.cpp} | 4 +- ...neSpecular_102_103_Visible_Range.unit.cpp} | 34 +- ...cular_1042_103_FirstLayerFlipped.unit.cpp} | 47 +- ...t.cpp => MultiPaneSpecular_21467.unit.cpp} | 39 +- ...it.cpp => MultiPaneSpecular_6046.unit.cpp} | 55 +- ...pp => MultiPaneSpecular_NFRC2600.unit.cpp} | 50 +- ...cpp => MultiPaneSpecular_NFRC913.unit.cpp} | 48 +- ...9_SB70XL_Colors_MultiPaneSpecular.unit.cpp | 9 +- .../Photovoltaic_DoublePane_Example1.unit.cpp | 11 +- .../Photovoltaic_DoublePane_Example2.unit.cpp | 10 +- .../tst/units/SpecularLayer_DualBand.unit.cpp | 6 +- 21 files changed, 648 insertions(+), 1252 deletions(-) create mode 100644 src/MultiLayerOptics/src/CalculationProperties.cpp delete mode 100644 src/MultiLayerOptics/tst/units/EquivalentSpecularAngularLayer_102_103.unit.cpp create mode 100644 src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_CondensedSpectrum.unit.cpp rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_102_103_EN410.unit.cpp => MultiPaneSpecular_102_103_EN410.unit.cpp} (96%) rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_102_103.unit.cpp => MultiPaneSpecular_102_103_FullSpectrum.unit.cpp} (84%) rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_102_103_IR_Range.unit.cpp => MultiPaneSpecular_102_103_IR_Range.unit.cpp} (97%) rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_102_103_Visible_Range.unit.cpp => MultiPaneSpecular_102_103_Visible_Range.unit.cpp} (97%) rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_1042_103_FirstLayerFlipped.unit.cpp => MultiPaneSpecular_1042_103_FirstLayerFlipped.unit.cpp} (96%) rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_21467.unit.cpp => MultiPaneSpecular_21467.unit.cpp} (95%) rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_6046.unit.cpp => MultiPaneSpecular_6046.unit.cpp} (89%) rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_NFRC2600.unit.cpp => MultiPaneSpecular_NFRC2600.unit.cpp} (93%) rename src/MultiLayerOptics/tst/units/{EquivalentSpecularLayer_NFRC913.unit.cpp => MultiPaneSpecular_NFRC913.unit.cpp} (91%) diff --git a/src/MultiLayerOptics/src/CalculationProperties.cpp b/src/MultiLayerOptics/src/CalculationProperties.cpp new file mode 100644 index 00000000..cca4be7b --- /dev/null +++ b/src/MultiLayerOptics/src/CalculationProperties.cpp @@ -0,0 +1,27 @@ +#include "CalculationProperties.hpp" + +namespace MultiLayerOptics{ + + CalculationProperties::CalculationProperties( + const FenestrationCommon::CSeries & solarRadiation, + std::optional> commonWavelengths, + std::optional detectorData) : + SolarRadiation(solarRadiation), + CommonWavelengths(std::move(commonWavelengths)), + DetectorData(std::move(detectorData)){} + + FenestrationCommon::CSeries CalculationProperties::scaledSolarRadiation() const + { + FenestrationCommon::CSeries result{SolarRadiation}; + if(CommonWavelengths.has_value()) + { + result = result.interpolate(CommonWavelengths.value()); + } + + if(DetectorData.has_value()) + { + result = result * DetectorData.value().interpolate(result.getXArray()); + } + return result; + } +} \ No newline at end of file diff --git a/src/MultiLayerOptics/src/CalculationProperties.hpp b/src/MultiLayerOptics/src/CalculationProperties.hpp index cb2c4252..2f596aaf 100644 --- a/src/MultiLayerOptics/src/CalculationProperties.hpp +++ b/src/MultiLayerOptics/src/CalculationProperties.hpp @@ -12,10 +12,7 @@ namespace MultiLayerOptics explicit CalculationProperties( const FenestrationCommon::CSeries & solarRadiation, std::optional> commonWavelengths = std::nullopt, - std::optional detectorData = std::nullopt) : - SolarRadiation(solarRadiation), - CommonWavelengths(std::move(commonWavelengths)), - DetectorData(std::move(detectorData)){}; + std::optional detectorData = std::nullopt);; FenestrationCommon::CSeries SolarRadiation; std::optional> CommonWavelengths; diff --git a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp index bddc0263..88236c5a 100644 --- a/src/MultiLayerOptics/src/MultiPaneBSDF.cpp +++ b/src/MultiLayerOptics/src/MultiPaneBSDF.cpp @@ -31,21 +31,6 @@ namespace SingleLayerOptics namespace MultiLayerOptics { - FenestrationCommon::CSeries CalculationProperties::scaledSolarRadiation() const - { - FenestrationCommon::CSeries result{SolarRadiation}; - if(CommonWavelengths.has_value()) - { - result = result.interpolate(CommonWavelengths.value()); - } - - if(DetectorData.has_value()) - { - result = result * DetectorData.value().interpolate(result.getXArray()); - } - return result; - } - CMultiPaneBSDF::CMultiPaneBSDF(const std::vector> & t_Layer, const std::optional> & matrixWavelengths) : m_EquivalentLayer(t_Layer, matrixWavelengths), diff --git a/src/MultiLayerOptics/src/MultiPaneSpecular.cpp b/src/MultiLayerOptics/src/MultiPaneSpecular.cpp index 6c7f9dc6..2facb22f 100644 --- a/src/MultiLayerOptics/src/MultiPaneSpecular.cpp +++ b/src/MultiLayerOptics/src/MultiPaneSpecular.cpp @@ -4,7 +4,6 @@ #include #include "MultiPaneSpecular.hpp" -#include "WCESingleLayerOptics.hpp" #include "WCECommon.hpp" using namespace FenestrationCommon; @@ -56,61 +55,22 @@ namespace MultiLayerOptics //////////////////////////////////////////////////////////////////////////////////////////// // CMultiPaneSpecular //////////////////////////////////////////////////////////////////////////////////////////// - CMultiPaneSpecular::CMultiPaneSpecular( - const std::vector> & layers, - const CSeries & t_SolarRadiation, - const CSeries & t_DetectorData) : - m_Layers(layers), - m_SolarRadiation(t_SolarRadiation), - m_DetectorData(t_DetectorData) - { - CCommonWavelengths aCommonWL; - for(auto & layer : m_Layers) - { - aCommonWL.addWavelength(layer->getBandWavelengths()); - } - - // Finds combination of two wavelength sets without going outside of wavelenght range for - // any of spectral samples. - m_CommonWavelengths = aCommonWL.getCombinedWavelengths(Combine::Interpolate); - - m_SolarRadiation = m_SolarRadiation.interpolate(m_CommonWavelengths); - if(m_DetectorData.size() > 0) - { - m_DetectorData.interpolate(m_CommonWavelengths); - } - - for(auto & layer : m_Layers) - { - layer->setSourceData(m_SolarRadiation); - } - } - - CMultiPaneSpecular::CMultiPaneSpecular(const std::vector & t_CommonWavelength, - const CSeries & t_SolarRadiation, - const std::shared_ptr & t_Layer) : - m_CommonWavelengths(t_CommonWavelength), - m_SolarRadiation(t_SolarRadiation) - { - m_SolarRadiation = m_SolarRadiation.interpolate(m_CommonWavelengths); - addLayer(t_Layer); - } - - void CMultiPaneSpecular::addLayer( - const std::shared_ptr & t_Layer) - { - t_Layer->setSourceData(m_SolarRadiation); - m_Layers.push_back(t_Layer); - } + CMultiPaneSpecular::CMultiPaneSpecular( + const std::vector> & t_Layer, + const std::optional> & matrixWavelengths) : + m_Layers(t_Layer), + m_MatrixWavelengths(matrixWavelengths.has_value() ? matrixWavelengths.value() + : unionOfLayerWavelengths(m_Layers)), + m_SpectralIntegrationWavelengths(matrixWavelengths) + {} std::unique_ptr CMultiPaneSpecular::create( const std::vector> & layers, - const CSeries & t_SolarRadiation, - const CSeries & t_DetectorData) + const std::optional> & matrixWavelengths) { return std::unique_ptr( - new CMultiPaneSpecular(layers, t_SolarRadiation, t_DetectorData)); + new CMultiPaneSpecular(layers, matrixWavelengths)); } double CMultiPaneSpecular::getPropertySimple( @@ -162,7 +122,7 @@ namespace MultiLayerOptics std::vector CMultiPaneSpecular::getWavelengths() const { - return m_CommonWavelengths; + return m_MatrixWavelengths; } double CMultiPaneSpecular::getProperty(const Side t_Side, @@ -177,22 +137,22 @@ namespace MultiLayerOptics auto aProperties = aAngularProperties.getProperties(t_Side, t_Property); - auto solarRadiation = m_SolarRadiation; + auto solarRadiation = m_ScaledSolarRadiation; - if(m_DetectorData.size() > 0) + if(m_SpectralIntegrationWavelengths.has_value()) { - if(m_DetectorData.size() != solarRadiation.size()) + aProperties = aProperties.interpolate(m_SpectralIntegrationWavelengths.value()); + if(m_SpectralIntegrationWavelengths.value().size() != m_ScaledSolarRadiation.size()) { - m_DetectorData = m_DetectorData.interpolate(solarRadiation.getXArray()); + m_ScaledSolarRadiation = + m_ScaledSolarRadiation.interpolate(m_SpectralIntegrationWavelengths.value()); } - solarRadiation = solarRadiation * m_DetectorData; } auto aMult = aProperties * solarRadiation; const auto iIntegrated = aMult.integrate(t_IntegrationType, normalizationCoefficient); - // TODO: Check detector data here and multiply with it if necessary const double totalProperty = iIntegrated.sum(minLambda, maxLambda); @@ -368,12 +328,23 @@ namespace MultiLayerOptics CEquivalentLayerSingleComponentMWAngle aAngularProperties = getAngular(t_Angle); auto aProperties = aAngularProperties.Abs(Index - 1, side); - auto aMult = aProperties * m_SolarRadiation; + if(m_SpectralIntegrationWavelengths.has_value()) + { + aProperties = aProperties.interpolate(m_SpectralIntegrationWavelengths.value()); + if(m_SpectralIntegrationWavelengths.value().size() != m_ScaledSolarRadiation.size()) + { + m_ScaledSolarRadiation = + m_ScaledSolarRadiation.interpolate(m_SpectralIntegrationWavelengths.value()); + } + } + + auto aMult = aProperties * m_ScaledSolarRadiation; auto iIntegrated = aMult.integrate(t_IntegrationType, normalizationCoefficient); double totalProperty = iIntegrated.sum(minLambda, maxLambda); - double totalSolar = m_SolarRadiation.integrate(t_IntegrationType, normalizationCoefficient) + double totalSolar = + m_ScaledSolarRadiation.integrate(t_IntegrationType, normalizationCoefficient) .sum(minLambda, maxLambda); assert(totalSolar > 0); @@ -416,7 +387,7 @@ namespace MultiLayerOptics if(std::dynamic_pointer_cast(m_Layers[Index - 1]) != nullptr) { const double totalEnergy = - m_SolarRadiation.integrate(t_IntegrationType, normalizationCoefficient) + m_ScaledSolarRadiation.integrate(t_IntegrationType, normalizationCoefficient) .sum(minLambda, maxLambda); CEquivalentLayerSingleComponentMWAngle aAngularProperties = getAngular(t_Angle); @@ -594,9 +565,9 @@ namespace MultiLayerOptics result.Rb.addProperty(wl[j], Rbv[j]); } - result.T = result.T.interpolate(m_CommonWavelengths); - result.Rf = result.Rf.interpolate(m_CommonWavelengths); - result.Rb = result.Rb.interpolate(m_CommonWavelengths); + result.T = result.T.interpolate(m_MatrixWavelengths); + result.Rf = result.Rf.interpolate(m_MatrixWavelengths); + result.Rb = result.Rb.interpolate(m_MatrixWavelengths); return result; } @@ -606,5 +577,26 @@ namespace MultiLayerOptics return m_Layers.size(); } + std::vector CMultiPaneSpecular::unionOfLayerWavelengths( + const std::vector> & t_Layer) + { + CCommonWavelengths aCommonWL; + for(auto & layer : t_Layer) + { + aCommonWL.addWavelength(layer->getBandWavelengths()); + } + + return aCommonWL.getCombinedWavelengths(Combine::Interpolate); + } + + void CMultiPaneSpecular::setCalculationProperties(const CalculationProperties & calcProperties) + { + m_ScaledSolarRadiation = calcProperties.scaledSolarRadiation(); + + if(calcProperties.CommonWavelengths.has_value()) + { + m_SpectralIntegrationWavelengths = calcProperties.CommonWavelengths.value(); + } + } } // namespace MultiLayerOptics diff --git a/src/MultiLayerOptics/src/MultiPaneSpecular.hpp b/src/MultiLayerOptics/src/MultiPaneSpecular.hpp index bb782e74..bc5a2b76 100644 --- a/src/MultiLayerOptics/src/MultiPaneSpecular.hpp +++ b/src/MultiLayerOptics/src/MultiPaneSpecular.hpp @@ -1,5 +1,4 @@ -#ifndef MultiPaneSpecular_H -#define MultiPaneSpecular_H +#pragma once #include #include @@ -8,6 +7,7 @@ #include "WCESingleLayerOptics.hpp" #include "EquivalentLayerSingleComponentMW.hpp" #include "AbsorptancesMultiPane.hpp" +#include "CalculationProperties.hpp" namespace SingleLayerOptics { @@ -49,25 +49,19 @@ namespace MultiLayerOptics /////////////////////////////////////////////////////////////////////////////////////// // Handles equivalent properties of MultiLayerOptics glass consists only of specular layers - class CMultiPaneSpecular : public SingleLayerOptics::IScatteringLayer + class CMultiPaneSpecular : public SingleLayerOptics::IScatteringLayer, + public MultiPaneCalcluationsSetter { protected: - CMultiPaneSpecular( - const std::vector> & layers, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData = FenestrationCommon::CSeries()); - - CMultiPaneSpecular(const std::vector & t_CommonWavelength, - const FenestrationCommon::CSeries & t_SolarRadiation, - const std::shared_ptr & t_Layer); - - void addLayer(const std::shared_ptr & t_Layer); + explicit CMultiPaneSpecular( + const std::vector> & t_Layer, + const std::optional> & matrixWavelengths); public: - static std::unique_ptr create( - const std::vector> & layers, - const FenestrationCommon::CSeries & t_SolarRadiation, - const FenestrationCommon::CSeries & t_DetectorData = FenestrationCommon::CSeries()); + static std::unique_ptr + create(const std::vector> & layers, + const std::optional> & matrixWavelengths = std::nullopt); + double getPropertySimple(FenestrationCommon::PropertySimple t_Property, FenestrationCommon::Side t_Side, @@ -83,11 +77,11 @@ namespace MultiLayerOptics double t_Theta = 0, double t_Phi = 0) override; - double getMinLambda() const override; + [[nodiscard]] double getMinLambda() const override; - double getMaxLambda() const override; + [[nodiscard]] double getMaxLambda() const override; - std::vector getWavelengths() const override; + [[nodiscard]] std::vector getWavelengths() const override; double getProperty(FenestrationCommon::Side t_Side, FenestrationCommon::Property t_Property, @@ -107,7 +101,7 @@ namespace MultiLayerOptics FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); - size_t size() const; + [[nodiscard]] size_t size() const; double getAbsorptanceLayer(size_t index, FenestrationCommon::Side side, @@ -169,7 +163,7 @@ namespace MultiLayerOptics double maxLambda, FenestrationCommon::Side side, FenestrationCommon::IntegrationType t_IntegrationType = - FenestrationCommon::IntegrationType::Trapezoidal, + FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); double AbsHeat(size_t Index, @@ -178,7 +172,7 @@ namespace MultiLayerOptics double maxLambda, FenestrationCommon::Side side, FenestrationCommon::IntegrationType t_IntegrationType = - FenestrationCommon::IntegrationType::Trapezoidal, + FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); double AbsElectricity(size_t Index, @@ -187,7 +181,7 @@ namespace MultiLayerOptics double maxLambda, FenestrationCommon::Side side, FenestrationCommon::IntegrationType t_IntegrationType = - FenestrationCommon::IntegrationType::Trapezoidal, + FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); std::vector Absorptances(double t_Angle, @@ -195,7 +189,7 @@ namespace MultiLayerOptics double maxLambda, FenestrationCommon::Side side, FenestrationCommon::IntegrationType t_IntegrationType = - FenestrationCommon::IntegrationType::Trapezoidal, + FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); // Hemispherical absorptances of each layer. Integration is performed over t_Angles. @@ -205,7 +199,7 @@ namespace MultiLayerOptics double maxLambda, FenestrationCommon::Side side, FenestrationCommon::IntegrationType t_IntegrationType = - FenestrationCommon::IntegrationType::Trapezoidal, + FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); double AbsHemisphericalHeat(size_t Index, @@ -214,7 +208,7 @@ namespace MultiLayerOptics double maxLambda, FenestrationCommon::Side side, FenestrationCommon::IntegrationType t_IntegrationType = - FenestrationCommon::IntegrationType::Trapezoidal, + FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); double AbsHemisphericalElectricity(size_t Index, @@ -223,9 +217,11 @@ namespace MultiLayerOptics double maxLambda, FenestrationCommon::Side side, FenestrationCommon::IntegrationType t_IntegrationType = - FenestrationCommon::IntegrationType::Trapezoidal, + FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); + void setCalculationProperties(const CalculationProperties & calcProperties) override; + protected: struct SeriesResults { @@ -245,9 +241,9 @@ namespace MultiLayerOptics // be able to recalculate equivalent properties for any angle std::vector> m_Layers; - std::vector m_CommonWavelengths; - FenestrationCommon::CSeries m_SolarRadiation; - FenestrationCommon::CSeries m_DetectorData; + std::vector m_MatrixWavelengths; + std::optional> m_SpectralIntegrationWavelengths; + FenestrationCommon::CSeries m_ScaledSolarRadiation; // Results for angle-properties std::pair. If same angle is required twice, then model will // not calculate it twice. First it will search for results here and if results are not @@ -256,9 +252,10 @@ namespace MultiLayerOptics SeriesResults getSeriesResults(const SingleLayerOptics::CBeamDirection & aDirection, size_t layerIndex); + + private: + static std::vector unionOfLayerWavelengths( + const std::vector> & t_Layer); }; } // namespace MultiLayerOptics - - -#endif diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularDualLayer_102_103.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularDualLayer_102_103.unit.cpp index 7422d755..dcb1e310 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularDualLayer_102_103.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularDualLayer_102_103.unit.cpp @@ -750,7 +750,11 @@ class EquivalentSpecularAngularDualLayer_102_103 : public testing::Test // Finds combination of two wavelength sets without going outside of wavelenght range for // any of spectral samples. - m_Layer = CMultiPaneSpecular::create({aCell_102, angularLayer}, aSolarRadiation); + m_Layer = CMultiPaneSpecular::create({aCell_102, angularLayer}); + + const CalculationProperties input{loadSolarRadiationFile(), + commonWavelengths}; + m_Layer->setCalculationProperties(input); } public: diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularLayer_102_103.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularLayer_102_103.unit.cpp deleted file mode 100644 index 8837e018..00000000 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularLayer_102_103.unit.cpp +++ /dev/null @@ -1,898 +0,0 @@ -#include -#include - -#include "WCESpectralAveraging.hpp" -#include "WCEMultiLayerOptics.hpp" -#include "WCESingleLayerOptics.hpp" -#include "WCECommon.hpp" - -using namespace SingleLayerOptics; -using namespace FenestrationCommon; -using namespace SpectralAveraging; -using namespace MultiLayerOptics; - -// Example/test case on multlayer specular -// Difference from BSDF layer is that properties can be calculated at any custom angle - -class EquivalentSpecularAngularLayer_102_103 : public testing::Test -{ -private: - // std::shared_ptr< CAngularMeasurements > m_Measurements; - std::shared_ptr m_Layer; - // std::shared_ptr< CMaterial > m_Material; - - CSeries loadSolarRadiationFile() - { - CSeries aSolarRadiation; - - // Full ASTM E891-87 Table 1 (Solar radiation) - aSolarRadiation.addProperty(0.3000, 0.0); - aSolarRadiation.addProperty(0.3050, 3.4); - aSolarRadiation.addProperty(0.3100, 15.6); - aSolarRadiation.addProperty(0.3150, 41.1); - aSolarRadiation.addProperty(0.3200, 71.2); - aSolarRadiation.addProperty(0.3250, 100.2); - aSolarRadiation.addProperty(0.3300, 152.4); - aSolarRadiation.addProperty(0.3350, 155.6); - aSolarRadiation.addProperty(0.3400, 179.4); - aSolarRadiation.addProperty(0.3450, 186.7); - aSolarRadiation.addProperty(0.3500, 212.0); - aSolarRadiation.addProperty(0.3600, 240.5); - aSolarRadiation.addProperty(0.3700, 324.0); - aSolarRadiation.addProperty(0.3800, 362.4); - aSolarRadiation.addProperty(0.3900, 381.7); - aSolarRadiation.addProperty(0.4000, 556.0); - aSolarRadiation.addProperty(0.4100, 656.3); - aSolarRadiation.addProperty(0.4200, 690.8); - aSolarRadiation.addProperty(0.4300, 641.9); - aSolarRadiation.addProperty(0.4400, 798.5); - aSolarRadiation.addProperty(0.4500, 956.6); - aSolarRadiation.addProperty(0.4600, 990.0); - aSolarRadiation.addProperty(0.4700, 998.0); - aSolarRadiation.addProperty(0.4800, 1046.1); - aSolarRadiation.addProperty(0.4900, 1005.1); - aSolarRadiation.addProperty(0.5000, 1026.7); - aSolarRadiation.addProperty(0.5100, 1066.7); - aSolarRadiation.addProperty(0.5200, 1011.5); - aSolarRadiation.addProperty(0.5300, 1084.9); - aSolarRadiation.addProperty(0.5400, 1082.4); - aSolarRadiation.addProperty(0.5500, 1102.2); - aSolarRadiation.addProperty(0.5700, 1087.4); - aSolarRadiation.addProperty(0.5900, 1024.3); - aSolarRadiation.addProperty(0.6100, 1088.8); - aSolarRadiation.addProperty(0.6300, 1062.1); - aSolarRadiation.addProperty(0.6500, 1061.7); - aSolarRadiation.addProperty(0.6700, 1046.2); - aSolarRadiation.addProperty(0.6900, 859.2); - aSolarRadiation.addProperty(0.7100, 1002.4); - aSolarRadiation.addProperty(0.7180, 816.9); - aSolarRadiation.addProperty(0.7244, 842.8); - aSolarRadiation.addProperty(0.7400, 971.0); - aSolarRadiation.addProperty(0.7525, 956.3); - aSolarRadiation.addProperty(0.7575, 942.2); - aSolarRadiation.addProperty(0.7625, 524.8); - aSolarRadiation.addProperty(0.7675, 830.7); - aSolarRadiation.addProperty(0.7800, 908.9); - aSolarRadiation.addProperty(0.8000, 873.4); - aSolarRadiation.addProperty(0.8160, 712.0); - aSolarRadiation.addProperty(0.8237, 660.2); - aSolarRadiation.addProperty(0.8315, 765.5); - aSolarRadiation.addProperty(0.8400, 799.8); - aSolarRadiation.addProperty(0.8600, 815.2); - aSolarRadiation.addProperty(0.8800, 778.3); - aSolarRadiation.addProperty(0.9050, 630.4); - aSolarRadiation.addProperty(0.9150, 565.2); - aSolarRadiation.addProperty(0.9250, 586.4); - aSolarRadiation.addProperty(0.9300, 348.1); - aSolarRadiation.addProperty(0.9370, 224.2); - aSolarRadiation.addProperty(0.9480, 271.4); - aSolarRadiation.addProperty(0.9650, 451.2); - aSolarRadiation.addProperty(0.9800, 549.7); - aSolarRadiation.addProperty(0.9935, 630.1); - aSolarRadiation.addProperty(1.0400, 582.9); - aSolarRadiation.addProperty(1.0700, 539.7); - aSolarRadiation.addProperty(1.1000, 366.2); - aSolarRadiation.addProperty(1.1200, 98.1); - aSolarRadiation.addProperty(1.1300, 169.5); - aSolarRadiation.addProperty(1.1370, 118.7); - aSolarRadiation.addProperty(1.1610, 301.9); - aSolarRadiation.addProperty(1.1800, 406.8); - aSolarRadiation.addProperty(1.2000, 375.2); - aSolarRadiation.addProperty(1.2350, 423.6); - aSolarRadiation.addProperty(1.2900, 365.7); - aSolarRadiation.addProperty(1.3200, 223.4); - aSolarRadiation.addProperty(1.3500, 30.1); - aSolarRadiation.addProperty(1.3950, 1.4); - aSolarRadiation.addProperty(1.4425, 51.6); - aSolarRadiation.addProperty(1.4625, 97.0); - aSolarRadiation.addProperty(1.4770, 97.3); - aSolarRadiation.addProperty(1.4970, 167.1); - aSolarRadiation.addProperty(1.5200, 239.3); - aSolarRadiation.addProperty(1.5390, 248.8); - aSolarRadiation.addProperty(1.5580, 249.3); - aSolarRadiation.addProperty(1.5780, 222.3); - aSolarRadiation.addProperty(1.5920, 227.3); - aSolarRadiation.addProperty(1.6100, 210.5); - aSolarRadiation.addProperty(1.6300, 224.7); - aSolarRadiation.addProperty(1.6460, 215.9); - aSolarRadiation.addProperty(1.6780, 202.8); - aSolarRadiation.addProperty(1.7400, 158.2); - aSolarRadiation.addProperty(1.8000, 28.6); - aSolarRadiation.addProperty(1.8600, 1.8); - aSolarRadiation.addProperty(1.9200, 1.1); - aSolarRadiation.addProperty(1.9600, 19.7); - aSolarRadiation.addProperty(1.9850, 84.9); - aSolarRadiation.addProperty(2.0050, 25.0); - aSolarRadiation.addProperty(2.0350, 92.5); - aSolarRadiation.addProperty(2.0650, 56.3); - aSolarRadiation.addProperty(2.1000, 82.7); - aSolarRadiation.addProperty(2.1480, 76.2); - aSolarRadiation.addProperty(2.1980, 66.4); - aSolarRadiation.addProperty(2.2700, 65.0); - aSolarRadiation.addProperty(2.3600, 57.6); - aSolarRadiation.addProperty(2.4500, 19.8); - aSolarRadiation.addProperty(2.4940, 17.0); - aSolarRadiation.addProperty(2.5370, 3.0); - aSolarRadiation.addProperty(2.9410, 4.0); - aSolarRadiation.addProperty(2.9730, 7.0); - aSolarRadiation.addProperty(3.0050, 6.0); - aSolarRadiation.addProperty(3.0560, 3.0); - aSolarRadiation.addProperty(3.1320, 5.0); - aSolarRadiation.addProperty(3.1560, 18.0); - aSolarRadiation.addProperty(3.2040, 1.2); - aSolarRadiation.addProperty(3.2450, 3.0); - aSolarRadiation.addProperty(3.3170, 12.0); - aSolarRadiation.addProperty(3.3440, 3.0); - aSolarRadiation.addProperty(3.4500, 12.2); - aSolarRadiation.addProperty(3.5730, 11.0); - aSolarRadiation.addProperty(3.7650, 9.0); - aSolarRadiation.addProperty(4.0450, 6.9); - - return aSolarRadiation; - } - - std::shared_ptr loadSampleData_NFRC_102() - { - std::shared_ptr aMeasurements_102 = - std::make_shared(); - - aMeasurements_102->addRecord(0.300, 0.0020, 0.0470, 0.0480); - aMeasurements_102->addRecord(0.305, 0.0030, 0.0470, 0.0480); - aMeasurements_102->addRecord(0.310, 0.0090, 0.0470, 0.0480); - aMeasurements_102->addRecord(0.315, 0.0350, 0.0470, 0.0480); - aMeasurements_102->addRecord(0.320, 0.1000, 0.0470, 0.0480); - aMeasurements_102->addRecord(0.325, 0.2180, 0.0490, 0.0500); - aMeasurements_102->addRecord(0.330, 0.3560, 0.0530, 0.0540); - aMeasurements_102->addRecord(0.335, 0.4980, 0.0600, 0.0610); - aMeasurements_102->addRecord(0.340, 0.6160, 0.0670, 0.0670); - aMeasurements_102->addRecord(0.345, 0.7090, 0.0730, 0.0740); - aMeasurements_102->addRecord(0.350, 0.7740, 0.0780, 0.0790); - aMeasurements_102->addRecord(0.355, 0.8180, 0.0820, 0.0820); - aMeasurements_102->addRecord(0.360, 0.8470, 0.0840, 0.0840); - aMeasurements_102->addRecord(0.365, 0.8630, 0.0850, 0.0850); - aMeasurements_102->addRecord(0.370, 0.8690, 0.0850, 0.0860); - aMeasurements_102->addRecord(0.375, 0.8610, 0.0850, 0.0850); - aMeasurements_102->addRecord(0.380, 0.8560, 0.0840, 0.0840); - aMeasurements_102->addRecord(0.385, 0.8660, 0.0850, 0.0850); - aMeasurements_102->addRecord(0.390, 0.8810, 0.0860, 0.0860); - aMeasurements_102->addRecord(0.395, 0.8890, 0.0860, 0.0860); - aMeasurements_102->addRecord(0.400, 0.8930, 0.0860, 0.0860); - aMeasurements_102->addRecord(0.410, 0.8930, 0.0860, 0.0860); - aMeasurements_102->addRecord(0.420, 0.8920, 0.0860, 0.0860); - aMeasurements_102->addRecord(0.430, 0.8920, 0.0850, 0.0850); - aMeasurements_102->addRecord(0.440, 0.8920, 0.0850, 0.0850); - aMeasurements_102->addRecord(0.450, 0.8960, 0.0850, 0.0850); - aMeasurements_102->addRecord(0.460, 0.9000, 0.0850, 0.0850); - aMeasurements_102->addRecord(0.470, 0.9020, 0.0840, 0.0840); - aMeasurements_102->addRecord(0.480, 0.9030, 0.0840, 0.0840); - aMeasurements_102->addRecord(0.490, 0.9040, 0.0850, 0.0850); - aMeasurements_102->addRecord(0.500, 0.9050, 0.0840, 0.0840); - aMeasurements_102->addRecord(0.510, 0.9050, 0.0840, 0.0840); - aMeasurements_102->addRecord(0.520, 0.9050, 0.0840, 0.0840); - aMeasurements_102->addRecord(0.530, 0.9040, 0.0840, 0.0840); - aMeasurements_102->addRecord(0.540, 0.9040, 0.0830, 0.0830); - aMeasurements_102->addRecord(0.550, 0.9030, 0.0830, 0.0830); - aMeasurements_102->addRecord(0.560, 0.9020, 0.0830, 0.0830); - aMeasurements_102->addRecord(0.570, 0.9000, 0.0820, 0.0820); - aMeasurements_102->addRecord(0.580, 0.8980, 0.0820, 0.0820); - aMeasurements_102->addRecord(0.590, 0.8960, 0.0810, 0.0810); - aMeasurements_102->addRecord(0.600, 0.8930, 0.0810, 0.0810); - aMeasurements_102->addRecord(0.610, 0.8900, 0.0810, 0.0810); - aMeasurements_102->addRecord(0.620, 0.8860, 0.0800, 0.0800); - aMeasurements_102->addRecord(0.630, 0.8830, 0.0800, 0.0800); - aMeasurements_102->addRecord(0.640, 0.8790, 0.0790, 0.0790); - aMeasurements_102->addRecord(0.650, 0.8750, 0.0790, 0.0790); - aMeasurements_102->addRecord(0.660, 0.8720, 0.0790, 0.0790); - aMeasurements_102->addRecord(0.670, 0.8680, 0.0780, 0.0780); - aMeasurements_102->addRecord(0.680, 0.8630, 0.0780, 0.0780); - aMeasurements_102->addRecord(0.690, 0.8590, 0.0770, 0.0770); - aMeasurements_102->addRecord(0.700, 0.8540, 0.0760, 0.0770); - aMeasurements_102->addRecord(0.710, 0.8500, 0.0760, 0.0760); - aMeasurements_102->addRecord(0.720, 0.8450, 0.0750, 0.0760); - aMeasurements_102->addRecord(0.730, 0.8400, 0.0750, 0.0750); - aMeasurements_102->addRecord(0.740, 0.8350, 0.0750, 0.0750); - aMeasurements_102->addRecord(0.750, 0.8310, 0.0740, 0.0740); - aMeasurements_102->addRecord(0.760, 0.8260, 0.0740, 0.0740); - aMeasurements_102->addRecord(0.770, 0.8210, 0.0740, 0.0740); - aMeasurements_102->addRecord(0.780, 0.8160, 0.0730, 0.0730); - aMeasurements_102->addRecord(0.790, 0.8120, 0.0730, 0.0730); - aMeasurements_102->addRecord(0.800, 0.8080, 0.0720, 0.0720); - aMeasurements_102->addRecord(0.810, 0.8030, 0.0720, 0.0720); - aMeasurements_102->addRecord(0.820, 0.8000, 0.0720, 0.0720); - aMeasurements_102->addRecord(0.830, 0.7960, 0.0710, 0.0710); - aMeasurements_102->addRecord(0.840, 0.7930, 0.0700, 0.0710); - aMeasurements_102->addRecord(0.850, 0.7880, 0.0700, 0.0710); - aMeasurements_102->addRecord(0.860, 0.7860, 0.0700, 0.0700); - aMeasurements_102->addRecord(0.870, 0.7820, 0.0740, 0.0740); - aMeasurements_102->addRecord(0.880, 0.7800, 0.0720, 0.0720); - aMeasurements_102->addRecord(0.890, 0.7770, 0.0730, 0.0740); - aMeasurements_102->addRecord(0.900, 0.7760, 0.0720, 0.0720); - aMeasurements_102->addRecord(0.910, 0.7730, 0.0720, 0.0720); - aMeasurements_102->addRecord(0.920, 0.7710, 0.0710, 0.0710); - aMeasurements_102->addRecord(0.930, 0.7700, 0.0700, 0.0700); - aMeasurements_102->addRecord(0.940, 0.7680, 0.0690, 0.0690); - aMeasurements_102->addRecord(0.950, 0.7660, 0.0680, 0.0680); - aMeasurements_102->addRecord(0.960, 0.7660, 0.0670, 0.0680); - aMeasurements_102->addRecord(0.970, 0.7640, 0.0680, 0.0680); - aMeasurements_102->addRecord(0.980, 0.7630, 0.0680, 0.0680); - aMeasurements_102->addRecord(0.990, 0.7620, 0.0670, 0.0670); - aMeasurements_102->addRecord(1.000, 0.7620, 0.0660, 0.0670); - aMeasurements_102->addRecord(1.050, 0.7600, 0.0660, 0.0660); - aMeasurements_102->addRecord(1.100, 0.7590, 0.0660, 0.0660); - aMeasurements_102->addRecord(1.150, 0.7610, 0.0660, 0.0660); - aMeasurements_102->addRecord(1.200, 0.7650, 0.0660, 0.0660); - aMeasurements_102->addRecord(1.250, 0.7700, 0.0650, 0.0650); - aMeasurements_102->addRecord(1.300, 0.7770, 0.0670, 0.0670); - aMeasurements_102->addRecord(1.350, 0.7860, 0.0660, 0.0670); - aMeasurements_102->addRecord(1.400, 0.7950, 0.0670, 0.0680); - aMeasurements_102->addRecord(1.450, 0.8080, 0.0670, 0.0670); - aMeasurements_102->addRecord(1.500, 0.8190, 0.0690, 0.0690); - aMeasurements_102->addRecord(1.550, 0.8290, 0.0690, 0.0690); - aMeasurements_102->addRecord(1.600, 0.8360, 0.0700, 0.0700); - aMeasurements_102->addRecord(1.650, 0.8400, 0.0700, 0.0700); - aMeasurements_102->addRecord(1.700, 0.8420, 0.0690, 0.0700); - aMeasurements_102->addRecord(1.750, 0.8420, 0.0690, 0.0700); - aMeasurements_102->addRecord(1.800, 0.8410, 0.0700, 0.0700); - aMeasurements_102->addRecord(1.850, 0.8400, 0.0690, 0.0690); - aMeasurements_102->addRecord(1.900, 0.8390, 0.0680, 0.0680); - aMeasurements_102->addRecord(1.950, 0.8390, 0.0710, 0.0710); - aMeasurements_102->addRecord(2.000, 0.8390, 0.0690, 0.0690); - aMeasurements_102->addRecord(2.050, 0.8400, 0.0680, 0.0680); - aMeasurements_102->addRecord(2.100, 0.8410, 0.0680, 0.0680); - aMeasurements_102->addRecord(2.150, 0.8390, 0.0690, 0.0690); - aMeasurements_102->addRecord(2.200, 0.8300, 0.0700, 0.0700); - aMeasurements_102->addRecord(2.250, 0.8300, 0.0700, 0.0700); - aMeasurements_102->addRecord(2.300, 0.8320, 0.0690, 0.0690); - aMeasurements_102->addRecord(2.350, 0.8320, 0.0690, 0.0700); - aMeasurements_102->addRecord(2.400, 0.8320, 0.0700, 0.0700); - aMeasurements_102->addRecord(2.450, 0.8260, 0.0690, 0.0690); - aMeasurements_102->addRecord(2.500, 0.8220, 0.0680, 0.0680); - - return aMeasurements_102; - } - - std::shared_ptr getSample1() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements0 = - std::make_shared(); - // incident angle = 0 - - aMeasurements0->addRecord(0.290, 0, 0.0481, 0.0481); - aMeasurements0->addRecord(0.295, 0, 0.0479, 0.0479); - aMeasurements0->addRecord(0.300, 0, 0.0476, 0.0476); - aMeasurements0->addRecord(0.305, 0, 0.0474, 0.0474); - aMeasurements0->addRecord(0.310, 0.007, 0.0471, 0.0471); - aMeasurements0->addRecord(0.315, 0.035, 0.047, 0.047); - aMeasurements0->addRecord(0.320, 0.0975, 0.0472, 0.0472); - aMeasurements0->addRecord(0.325, 0.2099, 0.0487, 0.0487); - aMeasurements0->addRecord(0.330, 0.3497, 0.0525, 0.0525); - aMeasurements0->addRecord(0.335, 0.4865, 0.0581, 0.0581); - aMeasurements0->addRecord(0.340, 0.6057, 0.0644, 0.0644); - aMeasurements0->addRecord(0.345, 0.7035, 0.0706, 0.0706); - aMeasurements0->addRecord(0.350, 0.7687, 0.0751, 0.0751); - aMeasurements0->addRecord(0.355, 0.812, 0.0783, 0.0783); - aMeasurements0->addRecord(0.360, 0.8429, 0.0806, 0.0806); - aMeasurements0->addRecord(0.365, 0.862, 0.0819, 0.0819); - aMeasurements0->addRecord(0.370, 0.8678, 0.0821, 0.0821); - aMeasurements0->addRecord(0.375, 0.8672, 0.0819, 0.0819); - aMeasurements0->addRecord(0.380, 0.8554, 0.0806, 0.0806); - aMeasurements0->addRecord(0.385, 0.8696, 0.0816, 0.0816); - aMeasurements0->addRecord(0.390, 0.8804, 0.0823, 0.0823); - aMeasurements0->addRecord(0.395, 0.8884, 0.0828, 0.0828); - aMeasurements0->addRecord(0.400, 0.8924, 0.083, 0.083); - aMeasurements0->addRecord(0.410, 0.8944, 0.0828, 0.0828); - aMeasurements0->addRecord(0.420, 0.8921, 0.0823, 0.0823); - aMeasurements0->addRecord(0.430, 0.8914, 0.082, 0.082); - aMeasurements0->addRecord(0.440, 0.8896, 0.0815, 0.0815); - aMeasurements0->addRecord(0.450, 0.8933, 0.0816, 0.0816); - aMeasurements0->addRecord(0.460, 0.8972, 0.0817, 0.0817); - aMeasurements0->addRecord(0.470, 0.8991, 0.0816, 0.0816); - aMeasurements0->addRecord(0.480, 0.9013, 0.0816, 0.0816); - aMeasurements0->addRecord(0.490, 0.9026, 0.0815, 0.0815); - aMeasurements0->addRecord(0.500, 0.9026, 0.0813, 0.0813); - aMeasurements0->addRecord(0.510, 0.9031, 0.0811, 0.0811); - aMeasurements0->addRecord(0.520, 0.9025, 0.0809, 0.0809); - aMeasurements0->addRecord(0.530, 0.9028, 0.0808, 0.0808); - aMeasurements0->addRecord(0.540, 0.9033, 0.0807, 0.0807); - aMeasurements0->addRecord(0.550, 0.9013, 0.0804, 0.0804); - aMeasurements0->addRecord(0.560, 0.8999, 0.0802, 0.0802); - aMeasurements0->addRecord(0.570, 0.8986, 0.0799, 0.0799); - aMeasurements0->addRecord(0.580, 0.8975, 0.0797, 0.0797); - aMeasurements0->addRecord(0.590, 0.8939, 0.0793, 0.0793); - aMeasurements0->addRecord(0.600, 0.8919, 0.079, 0.079); - aMeasurements0->addRecord(0.610, 0.891, 0.0789, 0.0789); - aMeasurements0->addRecord(0.620, 0.8853, 0.0783, 0.0783); - aMeasurements0->addRecord(0.630, 0.8838, 0.0781, 0.0781); - aMeasurements0->addRecord(0.640, 0.8806, 0.0777, 0.0777); - aMeasurements0->addRecord(0.650, 0.8769, 0.0773, 0.0773); - aMeasurements0->addRecord(0.660, 0.8735, 0.077, 0.077); - aMeasurements0->addRecord(0.670, 0.8731, 0.0769, 0.0769); - aMeasurements0->addRecord(0.680, 0.8665, 0.0763, 0.0763); - aMeasurements0->addRecord(0.690, 0.8637, 0.076, 0.076); - aMeasurements0->addRecord(0.700, 0.8607, 0.0757, 0.0757); - aMeasurements0->addRecord(0.710, 0.8557, 0.0753, 0.0753); - aMeasurements0->addRecord(0.720, 0.8531, 0.075, 0.075); - aMeasurements0->addRecord(0.730, 0.8487, 0.0746, 0.0746); - aMeasurements0->addRecord(0.740, 0.8418, 0.074, 0.074); - aMeasurements0->addRecord(0.750, 0.8406, 0.0738, 0.0738); - aMeasurements0->addRecord(0.760, 0.8358, 0.0734, 0.0734); - aMeasurements0->addRecord(0.770, 0.8341, 0.0732, 0.0732); - aMeasurements0->addRecord(0.780, 0.8324, 0.073, 0.073); - aMeasurements0->addRecord(0.790, 0.8232, 0.0723, 0.0723); - aMeasurements0->addRecord(0.800, 0.8246, 0.0723, 0.0723); - aMeasurements0->addRecord(0.850, 0.8076, 0.0708, 0.0708); - aMeasurements0->addRecord(0.900, 0.8002, 0.07, 0.07); - aMeasurements0->addRecord(0.950, 0.7907, 0.0692, 0.0692); - aMeasurements0->addRecord(1.000, 0.7862, 0.0687, 0.0687); - aMeasurements0->addRecord(1.050, 0.7849, 0.0685, 0.0685); - aMeasurements0->addRecord(1.100, 0.7848, 0.0683, 0.0683); - aMeasurements0->addRecord(1.150, 0.7864, 0.0683, 0.0683); - aMeasurements0->addRecord(1.200, 0.7894, 0.0685, 0.0685); - aMeasurements0->addRecord(1.250, 0.7944, 0.0687, 0.0687); - aMeasurements0->addRecord(1.300, 0.8014, 0.0691, 0.0691); - aMeasurements0->addRecord(1.350, 0.8088, 0.0695, 0.0695); - aMeasurements0->addRecord(1.400, 0.8168, 0.07, 0.07); - aMeasurements0->addRecord(1.450, 0.8261, 0.0705, 0.0705); - aMeasurements0->addRecord(1.500, 0.8366, 0.0712, 0.0712); - aMeasurements0->addRecord(1.550, 0.8444, 0.0716, 0.0716); - aMeasurements0->addRecord(1.600, 0.8506, 0.0719, 0.0719); - aMeasurements0->addRecord(1.650, 0.853, 0.072, 0.072); - aMeasurements0->addRecord(1.700, 0.8527, 0.0719, 0.0719); - aMeasurements0->addRecord(1.750, 0.8532, 0.0718, 0.0718); - aMeasurements0->addRecord(1.800, 0.8504, 0.0714, 0.0714); - aMeasurements0->addRecord(1.850, 0.8488, 0.0712, 0.0712); - aMeasurements0->addRecord(1.900, 0.8523, 0.0713, 0.0713); - aMeasurements0->addRecord(1.950, 0.8497, 0.071, 0.071); - aMeasurements0->addRecord(2.000, 0.848, 0.0708, 0.0708); - aMeasurements0->addRecord(2.050, 0.8488, 0.0707, 0.0707); - aMeasurements0->addRecord(2.100, 0.8505, 0.0707, 0.0707); - aMeasurements0->addRecord(2.150, 0.8408, 0.0699, 0.0699); - aMeasurements0->addRecord(2.200, 0.8304, 0.0691, 0.0691); - aMeasurements0->addRecord(2.250, 0.8277, 0.0688, 0.0688); - aMeasurements0->addRecord(2.300, 0.8303, 0.0688, 0.0688); - aMeasurements0->addRecord(2.350, 0.834, 0.069, 0.069); - aMeasurements0->addRecord(2.400, 0.8236, 0.0681, 0.0681); - aMeasurements0->addRecord(2.450, 0.8225, 0.0679, 0.0679); - aMeasurements0->addRecord(2.500, 0.8184, 0.0675, 0.0675); - - std::shared_ptr aSample0 = - std::make_shared(aMeasurements0, aSolarRadiation); - std::shared_ptr aAngular0 = - std::make_shared(aSample0, 0.0); - - return aAngular0; - } - - std::shared_ptr getSample2() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements1 = - std::make_shared(); - // incident angle = 10 - - aMeasurements1->addRecord(0.290, 0, 0.0481, 0.0481); - aMeasurements1->addRecord(0.295, 0, 0.0479, 0.0479); - aMeasurements1->addRecord(0.300, 0, 0.0476, 0.0476); - aMeasurements1->addRecord(0.305, 0, 0.0474, 0.0474); - aMeasurements1->addRecord(0.310, 0.0068, 0.0471, 0.0471); - aMeasurements1->addRecord(0.315, 0.0343, 0.047, 0.047); - aMeasurements1->addRecord(0.320, 0.0961, 0.0472, 0.0472); - aMeasurements1->addRecord(0.325, 0.208, 0.0487, 0.0487); - aMeasurements1->addRecord(0.330, 0.3476, 0.0524, 0.0524); - aMeasurements1->addRecord(0.335, 0.4845, 0.058, 0.058); - aMeasurements1->addRecord(0.340, 0.6041, 0.0643, 0.0643); - aMeasurements1->addRecord(0.345, 0.7023, 0.0705, 0.0705); - aMeasurements1->addRecord(0.350, 0.7678, 0.0751, 0.0751); - aMeasurements1->addRecord(0.355, 0.8114, 0.0783, 0.0783); - aMeasurements1->addRecord(0.360, 0.8424, 0.0805, 0.0805); - aMeasurements1->addRecord(0.365, 0.8617, 0.0819, 0.0819); - aMeasurements1->addRecord(0.370, 0.8675, 0.0821, 0.0821); - aMeasurements1->addRecord(0.375, 0.8669, 0.0819, 0.0819); - aMeasurements1->addRecord(0.380, 0.8551, 0.0806, 0.0806); - aMeasurements1->addRecord(0.385, 0.8693, 0.0816, 0.0816); - aMeasurements1->addRecord(0.390, 0.8802, 0.0823, 0.0823); - aMeasurements1->addRecord(0.395, 0.8882, 0.0829, 0.0829); - aMeasurements1->addRecord(0.400, 0.8922, 0.083, 0.083); - aMeasurements1->addRecord(0.410, 0.8943, 0.0829, 0.0829); - aMeasurements1->addRecord(0.420, 0.8919, 0.0823, 0.0823); - aMeasurements1->addRecord(0.430, 0.8912, 0.082, 0.082); - aMeasurements1->addRecord(0.440, 0.8894, 0.0815, 0.0815); - aMeasurements1->addRecord(0.450, 0.8931, 0.0816, 0.0816); - aMeasurements1->addRecord(0.460, 0.8971, 0.0817, 0.0817); - aMeasurements1->addRecord(0.470, 0.8989, 0.0816, 0.0816); - aMeasurements1->addRecord(0.480, 0.9011, 0.0816, 0.0816); - aMeasurements1->addRecord(0.490, 0.9025, 0.0815, 0.0815); - aMeasurements1->addRecord(0.500, 0.9025, 0.0813, 0.0813); - aMeasurements1->addRecord(0.510, 0.903, 0.0812, 0.0812); - aMeasurements1->addRecord(0.520, 0.9024, 0.0809, 0.0809); - aMeasurements1->addRecord(0.530, 0.9027, 0.0808, 0.0808); - aMeasurements1->addRecord(0.540, 0.9032, 0.0807, 0.0807); - aMeasurements1->addRecord(0.550, 0.9011, 0.0804, 0.0804); - aMeasurements1->addRecord(0.560, 0.8998, 0.0802, 0.0802); - aMeasurements1->addRecord(0.570, 0.8985, 0.0799, 0.0799); - aMeasurements1->addRecord(0.580, 0.8974, 0.0797, 0.0797); - aMeasurements1->addRecord(0.590, 0.8937, 0.0793, 0.0793); - aMeasurements1->addRecord(0.600, 0.8917, 0.079, 0.079); - aMeasurements1->addRecord(0.610, 0.8908, 0.0789, 0.0789); - aMeasurements1->addRecord(0.620, 0.885, 0.0783, 0.0783); - aMeasurements1->addRecord(0.630, 0.8835, 0.0781, 0.0781); - aMeasurements1->addRecord(0.640, 0.8803, 0.0777, 0.0777); - aMeasurements1->addRecord(0.650, 0.8766, 0.0774, 0.0774); - aMeasurements1->addRecord(0.660, 0.8732, 0.077, 0.077); - aMeasurements1->addRecord(0.670, 0.8728, 0.0769, 0.0769); - aMeasurements1->addRecord(0.680, 0.8662, 0.0763, 0.0763); - aMeasurements1->addRecord(0.690, 0.8633, 0.076, 0.076); - aMeasurements1->addRecord(0.700, 0.8603, 0.0757, 0.0757); - aMeasurements1->addRecord(0.710, 0.8552, 0.0753, 0.0753); - aMeasurements1->addRecord(0.720, 0.8527, 0.075, 0.075); - aMeasurements1->addRecord(0.730, 0.8482, 0.0746, 0.0746); - aMeasurements1->addRecord(0.740, 0.8413, 0.074, 0.074); - aMeasurements1->addRecord(0.750, 0.8401, 0.0738, 0.0738); - aMeasurements1->addRecord(0.760, 0.8352, 0.0734, 0.0734); - aMeasurements1->addRecord(0.770, 0.8335, 0.0732, 0.0732); - aMeasurements1->addRecord(0.780, 0.8318, 0.073, 0.073); - aMeasurements1->addRecord(0.790, 0.8225, 0.0722, 0.0722); - aMeasurements1->addRecord(0.800, 0.824, 0.0723, 0.0723); - aMeasurements1->addRecord(0.850, 0.8069, 0.0708, 0.0708); - aMeasurements1->addRecord(0.900, 0.7994, 0.07, 0.07); - aMeasurements1->addRecord(0.950, 0.7899, 0.0691, 0.0691); - aMeasurements1->addRecord(1.000, 0.7854, 0.0686, 0.0686); - aMeasurements1->addRecord(1.050, 0.7841, 0.0684, 0.0684); - aMeasurements1->addRecord(1.100, 0.7839, 0.0683, 0.0683); - aMeasurements1->addRecord(1.150, 0.7856, 0.0683, 0.0683); - aMeasurements1->addRecord(1.200, 0.7886, 0.0684, 0.0684); - aMeasurements1->addRecord(1.250, 0.7936, 0.0687, 0.0687); - aMeasurements1->addRecord(1.300, 0.8006, 0.069, 0.069); - aMeasurements1->addRecord(1.350, 0.8081, 0.0695, 0.0695); - aMeasurements1->addRecord(1.400, 0.8162, 0.0699, 0.0699); - aMeasurements1->addRecord(1.450, 0.8255, 0.0705, 0.0705); - aMeasurements1->addRecord(1.500, 0.836, 0.0711, 0.0711); - aMeasurements1->addRecord(1.550, 0.8439, 0.0716, 0.0716); - aMeasurements1->addRecord(1.600, 0.8501, 0.0719, 0.0719); - aMeasurements1->addRecord(1.650, 0.8525, 0.072, 0.072); - aMeasurements1->addRecord(1.700, 0.8522, 0.0719, 0.0719); - aMeasurements1->addRecord(1.750, 0.8527, 0.0718, 0.0718); - aMeasurements1->addRecord(1.800, 0.8499, 0.0714, 0.0714); - aMeasurements1->addRecord(1.850, 0.8483, 0.0712, 0.0712); - aMeasurements1->addRecord(1.900, 0.8518, 0.0713, 0.0713); - aMeasurements1->addRecord(1.950, 0.8492, 0.071, 0.071); - aMeasurements1->addRecord(2.000, 0.8475, 0.0708, 0.0708); - aMeasurements1->addRecord(2.050, 0.8483, 0.0707, 0.0707); - aMeasurements1->addRecord(2.100, 0.85, 0.0707, 0.0707); - aMeasurements1->addRecord(2.150, 0.8402, 0.0699, 0.0699); - aMeasurements1->addRecord(2.200, 0.8298, 0.069, 0.069); - aMeasurements1->addRecord(2.250, 0.8271, 0.0687, 0.0687); - aMeasurements1->addRecord(2.300, 0.8297, 0.0688, 0.0688); - aMeasurements1->addRecord(2.350, 0.8334, 0.069, 0.069); - aMeasurements1->addRecord(2.400, 0.823, 0.0681, 0.0681); - aMeasurements1->addRecord(2.450, 0.8218, 0.0679, 0.0679); - aMeasurements1->addRecord(2.500, 0.8176, 0.0675, 0.0675); - - std::shared_ptr aSample1 = - std::make_shared(aMeasurements1, aSolarRadiation); - std::shared_ptr aAngular1 = - std::make_shared(aSample1, 10.0); - - return aAngular1; - } - - std::shared_ptr getSample3() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements4 = - std::make_shared(); - // incident angle = 40 - - aMeasurements4->addRecord(0.290, 0, 0.0993, 0.0993); - aMeasurements4->addRecord(0.295, 0, 0.099, 0.099); - aMeasurements4->addRecord(0.300, 0, 0.0986, 0.0986); - aMeasurements4->addRecord(0.305, 0, 0.0984, 0.0984); - aMeasurements4->addRecord(0.310, 0.0023, 0.098, 0.098); - aMeasurements4->addRecord(0.315, 0.0161, 0.0978, 0.0978); - aMeasurements4->addRecord(0.320, 0.0553, 0.0979, 0.0979); - aMeasurements4->addRecord(0.325, 0.1392, 0.0996, 0.0996); - aMeasurements4->addRecord(0.330, 0.2575, 0.1049, 0.1049); - aMeasurements4->addRecord(0.335, 0.3836, 0.1143, 0.1143); - aMeasurements4->addRecord(0.340, 0.5002, 0.1261, 0.1261); - aMeasurements4->addRecord(0.345, 0.5999, 0.1387, 0.1387); - aMeasurements4->addRecord(0.350, 0.6682, 0.1485, 0.1485); - aMeasurements4->addRecord(0.355, 0.7145, 0.1556, 0.1556); - aMeasurements4->addRecord(0.360, 0.7478, 0.1609, 0.1609); - aMeasurements4->addRecord(0.365, 0.7686, 0.1643, 0.1643); - aMeasurements4->addRecord(0.370, 0.775, 0.1651, 0.1651); - aMeasurements4->addRecord(0.375, 0.7743, 0.1647, 0.1647); - aMeasurements4->addRecord(0.380, 0.7614, 0.1622, 0.1622); - aMeasurements4->addRecord(0.385, 0.7769, 0.1646, 0.1646); - aMeasurements4->addRecord(0.390, 0.7887, 0.1665, 0.1665); - aMeasurements4->addRecord(0.395, 0.7975, 0.1678, 0.1678); - aMeasurements4->addRecord(0.400, 0.8019, 0.1684, 0.1684); - aMeasurements4->addRecord(0.410, 0.8042, 0.1684, 0.1684); - aMeasurements4->addRecord(0.420, 0.8015, 0.1675, 0.1675); - aMeasurements4->addRecord(0.430, 0.8008, 0.167, 0.167); - aMeasurements4->addRecord(0.440, 0.7988, 0.1663, 0.1663); - aMeasurements4->addRecord(0.450, 0.8028, 0.1668, 0.1668); - aMeasurements4->addRecord(0.460, 0.8073, 0.1673, 0.1673); - aMeasurements4->addRecord(0.470, 0.8093, 0.1674, 0.1674); - aMeasurements4->addRecord(0.480, 0.8117, 0.1675, 0.1675); - aMeasurements4->addRecord(0.490, 0.8132, 0.1675, 0.1675); - aMeasurements4->addRecord(0.500, 0.8132, 0.1673, 0.1673); - aMeasurements4->addRecord(0.510, 0.8138, 0.1672, 0.1672); - aMeasurements4->addRecord(0.520, 0.8131, 0.1668, 0.1668); - aMeasurements4->addRecord(0.530, 0.8135, 0.1667, 0.1667); - aMeasurements4->addRecord(0.540, 0.814, 0.1666, 0.1666); - aMeasurements4->addRecord(0.550, 0.8117, 0.1661, 0.1661); - aMeasurements4->addRecord(0.560, 0.8102, 0.1656, 0.1656); - aMeasurements4->addRecord(0.570, 0.8088, 0.1652, 0.1652); - aMeasurements4->addRecord(0.580, 0.8076, 0.1648, 0.1648); - aMeasurements4->addRecord(0.590, 0.8035, 0.164, 0.164); - aMeasurements4->addRecord(0.600, 0.8013, 0.1634, 0.1634); - aMeasurements4->addRecord(0.610, 0.8003, 0.1632, 0.1632); - aMeasurements4->addRecord(0.620, 0.794, 0.1619, 0.1619); - aMeasurements4->addRecord(0.630, 0.7923, 0.1615, 0.1615); - aMeasurements4->addRecord(0.640, 0.7888, 0.1608, 0.1608); - aMeasurements4->addRecord(0.650, 0.7848, 0.16, 0.16); - aMeasurements4->addRecord(0.660, 0.781, 0.1593, 0.1593); - aMeasurements4->addRecord(0.670, 0.7806, 0.1591, 0.1591); - aMeasurements4->addRecord(0.680, 0.7733, 0.1578, 0.1578); - aMeasurements4->addRecord(0.690, 0.7702, 0.1571, 0.1571); - aMeasurements4->addRecord(0.700, 0.7669, 0.1565, 0.1565); - aMeasurements4->addRecord(0.710, 0.7614, 0.1555, 0.1555); - aMeasurements4->addRecord(0.720, 0.7586, 0.155, 0.155); - aMeasurements4->addRecord(0.730, 0.7537, 0.1541, 0.1541); - aMeasurements4->addRecord(0.740, 0.7462, 0.1528, 0.1528); - aMeasurements4->addRecord(0.750, 0.7449, 0.1525, 0.1525); - aMeasurements4->addRecord(0.760, 0.7396, 0.1515, 0.1515); - aMeasurements4->addRecord(0.770, 0.7378, 0.1512, 0.1512); - aMeasurements4->addRecord(0.780, 0.7359, 0.1508, 0.1508); - aMeasurements4->addRecord(0.790, 0.7259, 0.1491, 0.1491); - aMeasurements4->addRecord(0.800, 0.7275, 0.1493, 0.1493); - aMeasurements4->addRecord(0.850, 0.709, 0.1461, 0.1461); - aMeasurements4->addRecord(0.900, 0.7009, 0.1445, 0.1445); - aMeasurements4->addRecord(0.950, 0.6907, 0.1428, 0.1428); - aMeasurements4->addRecord(1.000, 0.6858, 0.1418, 0.1418); - aMeasurements4->addRecord(1.050, 0.6844, 0.1415, 0.1415); - aMeasurements4->addRecord(1.100, 0.6843, 0.1413, 0.1413); - aMeasurements4->addRecord(1.150, 0.686, 0.1414, 0.1414); - aMeasurements4->addRecord(1.200, 0.6892, 0.1418, 0.1418); - aMeasurements4->addRecord(1.250, 0.6946, 0.1424, 0.1424); - aMeasurements4->addRecord(1.300, 0.7021, 0.1434, 0.1434); - aMeasurements4->addRecord(1.350, 0.7101, 0.1445, 0.1445); - aMeasurements4->addRecord(1.400, 0.7188, 0.1457, 0.1457); - aMeasurements4->addRecord(1.450, 0.729, 0.1471, 0.1471); - aMeasurements4->addRecord(1.500, 0.7404, 0.1488, 0.1488); - aMeasurements4->addRecord(1.550, 0.7489, 0.15, 0.15); - aMeasurements4->addRecord(1.600, 0.7557, 0.1509, 0.1509); - aMeasurements4->addRecord(1.650, 0.7583, 0.1512, 0.1512); - aMeasurements4->addRecord(1.700, 0.758, 0.151, 0.151); - aMeasurements4->addRecord(1.750, 0.7585, 0.1509, 0.1509); - aMeasurements4->addRecord(1.800, 0.7554, 0.1503, 0.1503); - aMeasurements4->addRecord(1.850, 0.7537, 0.1498, 0.1498); - aMeasurements4->addRecord(1.900, 0.7575, 0.1503, 0.1503); - aMeasurements4->addRecord(1.950, 0.7546, 0.1497, 0.1497); - aMeasurements4->addRecord(2.000, 0.7528, 0.1492, 0.1492); - aMeasurements4->addRecord(2.050, 0.7536, 0.1492, 0.1492); - aMeasurements4->addRecord(2.100, 0.7555, 0.1494, 0.1494); - aMeasurements4->addRecord(2.150, 0.7449, 0.1475, 0.1475); - aMeasurements4->addRecord(2.200, 0.7335, 0.1456, 0.1456); - aMeasurements4->addRecord(2.250, 0.7305, 0.145, 0.145); - aMeasurements4->addRecord(2.300, 0.7334, 0.1453, 0.1453); - aMeasurements4->addRecord(2.350, 0.7374, 0.1458, 0.1458); - aMeasurements4->addRecord(2.400, 0.7261, 0.1439, 0.1439); - aMeasurements4->addRecord(2.450, 0.7248, 0.1436, 0.1436); - aMeasurements4->addRecord(2.500, 0.7203, 0.1427, 0.1427); - - std::shared_ptr aSample4 = - std::make_shared(aMeasurements4, aSolarRadiation); - std::shared_ptr aAngular4 = - std::make_shared(aSample4, 40.0); - - return aAngular4; - } - - std::shared_ptr getSample4() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - std::shared_ptr aMeasurements9 = - std::make_shared(); - // incident angle = 90 - aMeasurements9->addRecord(0.290, 0, 1, 1); - aMeasurements9->addRecord(0.295, 0, 1, 1); - aMeasurements9->addRecord(0.300, 0, 1, 1); - aMeasurements9->addRecord(0.305, 0, 1, 1); - aMeasurements9->addRecord(0.310, 0, 1, 1); - aMeasurements9->addRecord(0.315, 0, 1, 1); - aMeasurements9->addRecord(0.320, 0, 1, 1); - aMeasurements9->addRecord(0.325, 0, 1, 1); - aMeasurements9->addRecord(0.330, 0, 1, 1); - aMeasurements9->addRecord(0.335, 0, 1, 1); - aMeasurements9->addRecord(0.340, 0, 1, 1); - aMeasurements9->addRecord(0.345, 0, 1, 1); - aMeasurements9->addRecord(0.350, 0, 1, 1); - aMeasurements9->addRecord(0.355, 0, 1, 1); - aMeasurements9->addRecord(0.360, 0, 1, 1); - aMeasurements9->addRecord(0.365, 0, 1, 1); - aMeasurements9->addRecord(0.370, 0, 1, 1); - aMeasurements9->addRecord(0.375, 0, 1, 1); - aMeasurements9->addRecord(0.380, 0, 1, 1); - aMeasurements9->addRecord(0.385, 0, 1, 1); - aMeasurements9->addRecord(0.390, 0, 1, 1); - aMeasurements9->addRecord(0.395, 0, 1, 1); - aMeasurements9->addRecord(0.400, 0, 1, 1); - aMeasurements9->addRecord(0.410, 0, 1, 1); - aMeasurements9->addRecord(0.420, 0, 1, 1); - aMeasurements9->addRecord(0.430, 0, 1, 1); - aMeasurements9->addRecord(0.440, 0, 1, 1); - aMeasurements9->addRecord(0.450, 0, 1, 1); - aMeasurements9->addRecord(0.460, 0, 1, 1); - aMeasurements9->addRecord(0.470, 0, 1, 1); - aMeasurements9->addRecord(0.480, 0, 1, 1); - aMeasurements9->addRecord(0.490, 0, 1, 1); - aMeasurements9->addRecord(0.500, 0, 1, 1); - aMeasurements9->addRecord(0.510, 0, 1, 1); - aMeasurements9->addRecord(0.520, 0, 1, 1); - aMeasurements9->addRecord(0.530, 0, 1, 1); - aMeasurements9->addRecord(0.540, 0, 1, 1); - aMeasurements9->addRecord(0.550, 0, 1, 1); - aMeasurements9->addRecord(0.560, 0, 1, 1); - aMeasurements9->addRecord(0.570, 0, 1, 1); - aMeasurements9->addRecord(0.580, 0, 1, 1); - aMeasurements9->addRecord(0.590, 0, 1, 1); - aMeasurements9->addRecord(0.600, 0, 1, 1); - aMeasurements9->addRecord(0.610, 0, 1, 1); - aMeasurements9->addRecord(0.620, 0, 1, 1); - aMeasurements9->addRecord(0.630, 0, 1, 1); - aMeasurements9->addRecord(0.640, 0, 1, 1); - aMeasurements9->addRecord(0.650, 0, 1, 1); - aMeasurements9->addRecord(0.660, 0, 1, 1); - aMeasurements9->addRecord(0.670, 0, 1, 1); - aMeasurements9->addRecord(0.680, 0, 1, 1); - aMeasurements9->addRecord(0.690, 0, 1, 1); - aMeasurements9->addRecord(0.700, 0, 1, 1); - aMeasurements9->addRecord(0.710, 0, 1, 1); - aMeasurements9->addRecord(0.720, 0, 1, 1); - aMeasurements9->addRecord(0.730, 0, 1, 1); - aMeasurements9->addRecord(0.740, 0, 1, 1); - aMeasurements9->addRecord(0.750, 0, 1, 1); - aMeasurements9->addRecord(0.760, 0, 1, 1); - aMeasurements9->addRecord(0.770, 0, 1, 1); - aMeasurements9->addRecord(0.780, 0, 1, 1); - aMeasurements9->addRecord(0.790, 0, 1, 1); - aMeasurements9->addRecord(0.800, 0, 1, 1); - aMeasurements9->addRecord(0.850, 0, 1, 1); - aMeasurements9->addRecord(0.900, 0, 1, 1); - aMeasurements9->addRecord(0.950, 0, 1, 1); - aMeasurements9->addRecord(1.000, 0, 1, 1); - aMeasurements9->addRecord(1.050, 0, 1, 1); - aMeasurements9->addRecord(1.100, 0, 1, 1); - aMeasurements9->addRecord(1.150, 0, 1, 1); - aMeasurements9->addRecord(1.200, 0, 1, 1); - aMeasurements9->addRecord(1.250, 0, 1, 1); - aMeasurements9->addRecord(1.300, 0, 1, 1); - aMeasurements9->addRecord(1.350, 0, 1, 1); - aMeasurements9->addRecord(1.400, 0, 1, 1); - aMeasurements9->addRecord(1.450, 0, 1, 1); - aMeasurements9->addRecord(1.500, 0, 1, 1); - aMeasurements9->addRecord(1.550, 0, 1, 1); - aMeasurements9->addRecord(1.600, 0, 1, 1); - aMeasurements9->addRecord(1.650, 0, 1, 1); - aMeasurements9->addRecord(1.700, 0, 1, 1); - aMeasurements9->addRecord(1.750, 0, 1, 1); - aMeasurements9->addRecord(1.800, 0, 1, 1); - aMeasurements9->addRecord(1.850, 0, 1, 1); - aMeasurements9->addRecord(1.900, 0, 1, 1); - aMeasurements9->addRecord(1.950, 0, 1, 1); - aMeasurements9->addRecord(2.000, 0, 1, 1); - aMeasurements9->addRecord(2.050, 0, 1, 1); - aMeasurements9->addRecord(2.100, 0, 1, 1); - aMeasurements9->addRecord(2.150, 0, 1, 1); - aMeasurements9->addRecord(2.200, 0, 1, 1); - aMeasurements9->addRecord(2.250, 0, 1, 1); - aMeasurements9->addRecord(2.300, 0, 1, 1); - aMeasurements9->addRecord(2.350, 0, 1, 1); - aMeasurements9->addRecord(2.400, 0, 1, 1); - aMeasurements9->addRecord(2.450, 0, 1, 1); - aMeasurements9->addRecord(2.500, 0, 1, 1); - - std::shared_ptr aSample9 = - std::make_shared(aMeasurements9, aSolarRadiation); - std::shared_ptr aAngular9 = - std::make_shared(aSample9, 90.0); - - return aAngular9; - } - - -protected: - virtual void SetUp() - { - auto aSolarRadiation = loadSolarRadiationFile(); - - double thickness = 3.048e-3; // [m] - const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - - auto layer102 = SingleLayerOptics::SpecularLayer::createLayer(aMaterial_102); - - std::shared_ptr aAngular0 = getSample1(); - std::shared_ptr aAngular1 = getSample2(); - std::shared_ptr aAngular4 = getSample3(); - std::shared_ptr aAngular9 = getSample4(); - - // To assure interpolation to common wavelengths. MultiBSDF will NOT work with different - // wavelengths - CCommonWavelengths aCommonWL; - aCommonWL.addWavelength(layer102->getBandWavelengths()); - std::vector wl0 = aAngular0->getWavelengthsFromSample(); - std::vector wl10 = aAngular1->getWavelengthsFromSample(); - std::vector wl40 = aAngular4->getWavelengthsFromSample(); - std::vector wl90 = aAngular9->getWavelengthsFromSample(); - aCommonWL.addWavelength(wl0); - aCommonWL.addWavelength(wl10); - aCommonWL.addWavelength(wl40); - aCommonWL.addWavelength(wl90); - std::vector commonWavelengths = - aCommonWL.getCombinedWavelengths(Combine::Interpolate); - - std::shared_ptr m_Measurements = - std::make_shared(aAngular0, commonWavelengths); - m_Measurements->addMeasurement(aAngular1); - m_Measurements->addMeasurement(aAngular4); - m_Measurements->addMeasurement(aAngular9); - - const auto aMaterial_103 = - std::make_shared(m_Measurements, WavelengthRange::Solar); - auto angularLayer = SingleLayerOptics::SpecularLayer::createLayer(aMaterial_103); - - // Finds combination of two wavelength sets without going outside of wavelenght range for - // any of spectral samples. - - m_Layer = CMultiPaneSpecular::create({layer102, angularLayer}, aSolarRadiation); - } - -public: - std::shared_ptr getLayer() const - { - return m_Layer; - }; -}; - -TEST_F(EquivalentSpecularAngularLayer_102_103, TestAngle0) -{ - SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); - - const double minLambda = 0.3; - const double maxLambda = 2.5; - const double angle = 0.0; - - CMultiPaneSpecular aLayer = *getLayer(); - - double T = aLayer.getProperty(Side::Front, Property::T, angle, minLambda, maxLambda); - EXPECT_NEAR(0.711227, T, 1e-6); - - double Rf = aLayer.getProperty(Side::Front, Property::R, angle, minLambda, maxLambda); - EXPECT_NEAR(0.127596, Rf, 1e-6); - - double Rb = aLayer.getProperty(Side::Back, Property::R, angle, minLambda, maxLambda); - EXPECT_NEAR(0.128810, Rb, 1e-6); - - double Abs1 = aLayer.Abs(1, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.096524, Abs1, 1e-6); - - double Abs2 = aLayer.Abs(2, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.064654, Abs2, 1e-6); - - double sum = T + Rf + Abs1 + Abs2; - EXPECT_NEAR(1.0, sum, 1e-6); -} - -TEST_F(EquivalentSpecularAngularLayer_102_103, TestAngle10) -{ - SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 10 deg."); - - const double minLambda = 0.3; - const double maxLambda = 2.5; - const double angle = 10; - - CMultiPaneSpecular aLayer = *getLayer(); - - double T = aLayer.getProperty(Side::Front, Property::T, angle, minLambda, maxLambda); - EXPECT_NEAR(0.710393, T, 1e-6); - - double Rf = aLayer.getProperty(Side::Front, Property::R, angle, minLambda, maxLambda); - EXPECT_NEAR(0.127511, Rf, 1e-6); - - double Rb = aLayer.getProperty(Side::Back, Property::R, angle, minLambda, maxLambda); - EXPECT_NEAR(0.128729, Rb, 1e-6); - - double Abs1 = aLayer.Abs(1, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.097104, Abs1, 1e-6); - - double Abs2 = aLayer.Abs(2, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.064993, Abs2, 1e-6); - - double sum = T + Rf + Abs1 + Abs2; - EXPECT_NEAR(1.0, sum, 1e-6); -} - -TEST_F(EquivalentSpecularAngularLayer_102_103, TestAngle25) -{ - SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 25 deg."); - - const double minLambda = 0.3; - const double maxLambda = 2.5; - const double angle = 25; - - CMultiPaneSpecular aLayer = *getLayer(); - - double T = aLayer.getProperty(Side::Front, Property::T, angle, minLambda, maxLambda); - EXPECT_NEAR(0.670175, T, 1e-6); - - double Rf = aLayer.getProperty(Side::Front, Property::R, angle, minLambda, maxLambda); - EXPECT_NEAR(0.155991, Rf, 1e-6); - - double Rb = aLayer.getProperty(Side::Back, Property::R, angle, minLambda, maxLambda); - EXPECT_NEAR(0.163234, Rb, 1e-6); - - double Abs1 = aLayer.Abs(1, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.102983, Abs1, 1e-6); - - double Abs2 = aLayer.Abs(2, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.070852, Abs2, 1e-6); - - double sum = T + Rf + Abs1 + Abs2; - EXPECT_NEAR(1.0, sum, 1e-6); -} - -TEST_F(EquivalentSpecularAngularLayer_102_103, TestAngle90) -{ - SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 90 deg."); - - const double minLambda = 0.3; - const double maxLambda = 2.5; - const double angle = 90; - - CMultiPaneSpecular aLayer = *getLayer(); - - double T = aLayer.getProperty(Side::Front, Property::T, angle, minLambda, maxLambda); - EXPECT_NEAR(0.0, T, 1e-6); - - double Rf = aLayer.getProperty(Side::Front, Property::R, angle, minLambda, maxLambda); - EXPECT_NEAR(1.0, Rf, 1e-6); - - double Rb = aLayer.getProperty(Side::Back, Property::R, angle, minLambda, maxLambda); - EXPECT_NEAR(1.0, Rb, 1e-6); - - double Abs1 = aLayer.Abs(1, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.0, Abs1, 1e-6); - - double Abs2 = aLayer.Abs(2, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.0, Abs2, 1e-6); - - double sum = T + Rf + Abs1 + Abs2; - EXPECT_NEAR(1.0, sum, 1e-6); -} diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_CondensedSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_CondensedSpectrum.unit.cpp new file mode 100644 index 00000000..59cffedb --- /dev/null +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_CondensedSpectrum.unit.cpp @@ -0,0 +1,289 @@ +#include +#include + +#include "WCESpectralAveraging.hpp" +#include "WCEMultiLayerOptics.hpp" + +using namespace SingleLayerOptics; +using namespace FenestrationCommon; +using namespace SpectralAveraging; +using namespace MultiLayerOptics; + +// Example/test case on multlayer specular +// Difference from BSDF layer is that properties can be calculated at any custom angle + +class MultiPaneSpecular_102_103_CondensedSpectrum : public testing::Test +{ +private: + std::shared_ptr m_Layer; + + static CSeries loadSolarRadiationFile() + { + // Full ASTM E891-87 Table 1 (Solar radiation) + CSeries aSolarRadiation( + {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, + {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, + {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, + {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, + {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, + {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, + {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, + {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, + {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, + {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, + {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, + {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, + {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, + {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, + {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, + {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, + {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, + {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, + {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, + {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, + {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, + {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, + {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, + {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, + {4.0450, 6.9} + + }); + + return aSolarRadiation; + } + + static std::shared_ptr loadSampleData_NFRC_102() + { + auto aMeasurements_102 = CSpectralSampleData::create( + {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, + {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, + {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, + {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, + {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, + {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, + {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, + {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, + {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, + {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, + {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, + {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, + {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, + {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, + {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, + {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, + {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, + {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, + {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, + {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, + {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, + {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, + {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, + {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, + {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, + {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, + {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, + {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, + {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, + {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, + {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, + {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, + {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, + {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, + {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, + {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, + {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, + {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, + {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, + {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, + {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, + {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, + {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, + {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, + {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, + {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, + {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, + {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, + {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, + {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, + {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, + {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, + {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, + {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, + {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, + {2.500, 0.8220, 0.0680, 0.0680}}); + + return aMeasurements_102; + } + + static std::shared_ptr loadSampleData_NFRC_103() + { + auto aMeasurements_103 = CSpectralSampleData::create( + {{0.300, 0.0000, 0.0470, 0.0490}, {0.305, 0.0050, 0.0470, 0.0490}, + {0.310, 0.0000, 0.0470, 0.0480}, {0.315, 0.0030, 0.0460, 0.0480}, + {0.320, 0.0190, 0.0460, 0.0480}, {0.325, 0.0660, 0.0450, 0.0460}, + {0.330, 0.1600, 0.0450, 0.0470}, {0.335, 0.2940, 0.0490, 0.0500}, + {0.340, 0.4370, 0.0550, 0.0560}, {0.345, 0.5660, 0.0620, 0.0620}, + {0.350, 0.6710, 0.0690, 0.0690}, {0.355, 0.7440, 0.0740, 0.0740}, + {0.360, 0.7930, 0.0780, 0.0780}, {0.365, 0.8220, 0.0800, 0.0800}, + {0.370, 0.8320, 0.0810, 0.0810}, {0.375, 0.8190, 0.0800, 0.0800}, + {0.380, 0.8090, 0.0790, 0.0790}, {0.385, 0.8290, 0.0800, 0.0800}, + {0.390, 0.8530, 0.0820, 0.0820}, {0.395, 0.8680, 0.0830, 0.0830}, + {0.400, 0.8750, 0.0830, 0.0830}, {0.410, 0.8750, 0.0830, 0.0830}, + {0.420, 0.8730, 0.0830, 0.0830}, {0.430, 0.8730, 0.0820, 0.0820}, + {0.440, 0.8730, 0.0820, 0.0820}, {0.450, 0.8800, 0.0820, 0.0820}, + {0.460, 0.8870, 0.0820, 0.0820}, {0.470, 0.8900, 0.0820, 0.0820}, + {0.480, 0.8920, 0.0830, 0.0830}, {0.490, 0.8930, 0.0820, 0.0820}, + {0.500, 0.8940, 0.0820, 0.0820}, {0.510, 0.8950, 0.0820, 0.0820}, + {0.520, 0.8950, 0.0820, 0.0820}, {0.530, 0.8940, 0.0820, 0.0820}, + {0.540, 0.8930, 0.0810, 0.0810}, {0.550, 0.8910, 0.0810, 0.0810}, + {0.560, 0.8880, 0.0810, 0.0810}, {0.570, 0.8840, 0.0800, 0.0800}, + {0.580, 0.8810, 0.0800, 0.0800}, {0.590, 0.8760, 0.0790, 0.0790}, + {0.600, 0.8710, 0.0790, 0.0790}, {0.610, 0.8650, 0.0780, 0.0780}, + {0.620, 0.8590, 0.0770, 0.0770}, {0.630, 0.8530, 0.0770, 0.0770}, + {0.640, 0.8470, 0.0760, 0.0760}, {0.650, 0.8400, 0.0750, 0.0750}, + {0.660, 0.8330, 0.0750, 0.0750}, {0.670, 0.8260, 0.0740, 0.0740}, + {0.680, 0.8180, 0.0730, 0.0730}, {0.690, 0.8100, 0.0730, 0.0730}, + {0.700, 0.8020, 0.0720, 0.0720}, {0.710, 0.7940, 0.0710, 0.0720}, + {0.720, 0.7860, 0.0710, 0.0710}, {0.730, 0.7770, 0.0700, 0.0700}, + {0.740, 0.7690, 0.0690, 0.0700}, {0.750, 0.7610, 0.0690, 0.0690}, + {0.760, 0.7520, 0.0680, 0.0680}, {0.770, 0.7440, 0.0670, 0.0680}, + {0.780, 0.7360, 0.0670, 0.0670}, {0.790, 0.7290, 0.0660, 0.0660}, + {0.800, 0.7220, 0.0660, 0.0660}, {0.810, 0.7150, 0.0650, 0.0660}, + {0.820, 0.7100, 0.0650, 0.0650}, {0.830, 0.7020, 0.0640, 0.0650}, + {0.840, 0.6980, 0.0640, 0.0640}, {0.850, 0.6900, 0.0630, 0.0640}, + {0.860, 0.6870, 0.0650, 0.0650}, {0.870, 0.6810, 0.0670, 0.0670}, + {0.880, 0.6770, 0.0650, 0.0660}, {0.890, 0.6730, 0.0660, 0.0660}, + {0.900, 0.6700, 0.0650, 0.0660}, {0.910, 0.6670, 0.0650, 0.0650}, + {0.920, 0.6640, 0.0640, 0.0640}, {0.930, 0.6600, 0.0630, 0.0630}, + {0.940, 0.6580, 0.0640, 0.0640}, {0.950, 0.6560, 0.0630, 0.0630}, + {0.960, 0.6540, 0.0610, 0.0610}, {0.970, 0.6530, 0.0620, 0.0620}, + {0.980, 0.6510, 0.0610, 0.0620}, {0.990, 0.6490, 0.0610, 0.0620}, + {1.000, 0.6480, 0.0590, 0.0600}, {1.050, 0.6450, 0.0590, 0.0600}, + {1.100, 0.6450, 0.0580, 0.0590}, {1.150, 0.6470, 0.0590, 0.0590}, + {1.200, 0.6530, 0.0590, 0.0590}, {1.250, 0.6610, 0.0580, 0.0590}, + {1.300, 0.6730, 0.0600, 0.0600}, {1.350, 0.6870, 0.0600, 0.0600}, + {1.400, 0.7020, 0.0610, 0.0610}, {1.450, 0.7220, 0.0610, 0.0620}, + {1.500, 0.7410, 0.0630, 0.0640}, {1.550, 0.7570, 0.0630, 0.0640}, + {1.600, 0.7690, 0.0650, 0.0650}, {1.650, 0.7750, 0.0650, 0.0640}, + {1.700, 0.7790, 0.0640, 0.0650}, {1.750, 0.7790, 0.0650, 0.0650}, + {1.800, 0.7770, 0.0650, 0.0650}, {1.850, 0.7760, 0.0650, 0.0630}, + {1.900, 0.7730, 0.0620, 0.0620}, {1.950, 0.7730, 0.0650, 0.0650}, + {2.000, 0.7720, 0.0650, 0.0650}, {2.050, 0.7740, 0.0640, 0.0640}, + {2.100, 0.7750, 0.0640, 0.0650}, {2.150, 0.7730, 0.0650, 0.0650}, + {2.200, 0.7580, 0.0640, 0.0650}, {2.250, 0.7590, 0.0640, 0.0640}, + {2.300, 0.7660, 0.0650, 0.0650}, {2.350, 0.7670, 0.0640, 0.0650}, + {2.400, 0.7660, 0.0640, 0.0640}, {2.450, 0.7570, 0.0640, 0.0640}, + {2.500, 0.7500, 0.0630, 0.0630}}); + + return aMeasurements_103; + } + +protected: + virtual void SetUp() + { + double thickness = 3.048e-3; // [m] + const auto aMaterial_102 = Material::nBandMaterial( + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + + thickness = 5.715e-3; // [m] + const auto aMaterial_103 = Material::nBandMaterial( + loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + + + auto layer102 = SpecularLayer::createLayer(aMaterial_102); + auto layer103 = SpecularLayer::createLayer(aMaterial_103); + + const std::vector condensed{0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + + m_Layer = CMultiPaneSpecular::create({layer102, layer103}, condensed); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); + + } + +public: + [[nodiscard]] std::shared_ptr getLayer() const + { + return m_Layer; + }; +}; + +TEST_F(MultiPaneSpecular_102_103_CondensedSpectrum, TestAngle0) +{ + SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); + + const double angle = 0; + + const double minLambda = 0.3; + const double maxLambda = 2.5; + + CMultiPaneSpecular aLayer = *getLayer(); + + const double T = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.65096737306210839, T, 1e-6); + + const double Rf = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.12437233463533325, Rf, 1e-6); + + const double Rb = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.11621576724154123, Rb, 1e-6); + + const std::vector AbsorptanceFront{aLayer.getAbsorptanceLayers( + minLambda, maxLambda, Side::Front, ScatteringSimple::Direct, angle, 0)}; + + const double AbsFront1 = + aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + EXPECT_NEAR(0.09886828346187998, AbsFront1, 1e-6); + EXPECT_NEAR(0.09886828346187998, AbsorptanceFront[0], 1e-6); + + const double AbsFront2 = + aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + EXPECT_NEAR(0.12579200884067865, AbsFront2, 1e-6); + EXPECT_NEAR(0.12579200884067865, AbsorptanceFront[1], 1e-6); + + const std::vector AbsorptanceBack{aLayer.getAbsorptanceLayers( + minLambda, maxLambda, Side::Back, ScatteringSimple::Direct, angle, 0)}; + + const double AbsBack1 = + aLayer.getAbsorptanceLayer(1, Side::Back, ScatteringSimple::Direct, angle, 0); + EXPECT_NEAR(0.16896549433713057, AbsBack1, 1e-6); + EXPECT_NEAR(0.16896549433713057, AbsorptanceBack[0], 1e-6); + + const double AbsBack2 = + aLayer.getAbsorptanceLayer(2, Side::Back, ScatteringSimple::Direct, angle, 0); + EXPECT_NEAR(0.063851365359220133, AbsBack2, 1e-6); + EXPECT_NEAR(0.063851365359220133, AbsorptanceBack[1], 1e-6); + + const double Them = + aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); + EXPECT_NEAR(0.55134962796067644, Them, 1e-6); + + const double Rfhem = + aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); + EXPECT_NEAR(0.20101014299215508, Rfhem, 1e-6); + + const double Rbhem = + aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); + EXPECT_NEAR(0.18703361935727306, Rbhem, 1e-6); +} diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_EN410.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_EN410.unit.cpp similarity index 96% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_EN410.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_EN410.unit.cpp index 492c1c0d..7d0881bf 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_EN410.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_EN410.unit.cpp @@ -14,7 +14,7 @@ using namespace MultiLayerOptics; // Example/test case on multlayer specular // Difference from BSDF layer is that properties can be calculated at any custom angle -class EquivalentSpecularLayer_102_103_EN410 : public testing::Test +class MultiPaneSpecular_102_103_EN410 : public testing::Test { private: std::shared_ptr m_Layer; @@ -172,9 +172,6 @@ class EquivalentSpecularLayer_102_103_EN410 : public testing::Test { const auto aSolarRadiation = loadSolarRadiationFile(); - // Wavelength data set according to NFRC 2003 standard is from solar radiation file - const std::vector wl = aSolarRadiation.getXArray(); - double thickness = 3.048e-3; // [m] const auto aMaterial_102 = Material::nBandMaterial(loadSampleData_NFRC_102(), thickness, @@ -182,7 +179,6 @@ class EquivalentSpecularLayer_102_103_EN410 : public testing::Test WavelengthRange::Solar, IntegrationType::PreWeighted); - aMaterial_102->setBandWavelengths(wl); thickness = 5.715e-3; // [m] const auto aMaterial_103 = Material::nBandMaterial(loadSampleData_NFRC_103(), @@ -191,22 +187,25 @@ class EquivalentSpecularLayer_102_103_EN410 : public testing::Test WavelengthRange::Solar, IntegrationType::PreWeighted); - aMaterial_103->setBandWavelengths(wl); const auto layer102 = SpecularLayer::createLayer(aMaterial_102); const auto layer103 = SpecularLayer::createLayer(aMaterial_103); - m_Layer = CMultiPaneSpecular::create({layer102, layer103}, loadSolarRadiationFile()); + m_Layer = CMultiPaneSpecular::create({layer102, layer103}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: - std::shared_ptr getLayer() const + [[nodiscard]] std::shared_ptr getLayer() const { return m_Layer; }; }; -TEST_F(EquivalentSpecularLayer_102_103_EN410, TestAngle0) +TEST_F(MultiPaneSpecular_102_103_EN410, TestAngle0) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_FullSpectrum.unit.cpp similarity index 84% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_FullSpectrum.unit.cpp index 78940128..a8dad832 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_FullSpectrum.unit.cpp @@ -3,8 +3,6 @@ #include "WCESpectralAveraging.hpp" #include "WCEMultiLayerOptics.hpp" -#include "WCESingleLayerOptics.hpp" -#include "WCECommon.hpp" using namespace SingleLayerOptics; using namespace FenestrationCommon; @@ -14,12 +12,12 @@ using namespace MultiLayerOptics; // Example/test case on multlayer specular // Difference from BSDF layer is that properties can be calculated at any custom angle -class EquivalentSpecularLayer_102_103 : public testing::Test +class MultiPaneSpecular_102_103_FullSpectrum : public testing::Test { private: std::shared_ptr m_Layer; - CSeries loadSolarRadiationFile() const + static CSeries loadSolarRadiationFile() { // Full ASTM E891-87 Table 1 (Solar radiation) CSeries aSolarRadiation( @@ -54,7 +52,7 @@ class EquivalentSpecularLayer_102_103 : public testing::Test return aSolarRadiation; } - std::shared_ptr loadSampleData_NFRC_102() const + static std::shared_ptr loadSampleData_NFRC_102() { auto aMeasurements_102 = CSpectralSampleData::create( {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, @@ -117,7 +115,7 @@ class EquivalentSpecularLayer_102_103 : public testing::Test return aMeasurements_102; } - std::shared_ptr loadSampleData_NFRC_103() const + static std::shared_ptr loadSampleData_NFRC_103() { auto aMeasurements_103 = CSpectralSampleData::create( {{0.300, 0.0000, 0.0470, 0.0490}, {0.305, 0.0050, 0.0470, 0.0490}, @@ -183,37 +181,34 @@ class EquivalentSpecularLayer_102_103 : public testing::Test protected: virtual void SetUp() { - const auto aSolarRadiation = loadSolarRadiationFile(); - - // Wavelength data set according to NFRC 2003 standard is from solar radiation file - const auto wl = aSolarRadiation.getXArray(); - double thickness = 3.048e-3; // [m] const auto aMaterial_102 = Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - aMaterial_102->setBandWavelengths(wl); - thickness = 5.715e-3; // [m] const auto aMaterial_103 = Material::nBandMaterial( loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - aMaterial_103->setBandWavelengths(wl); auto layer102 = SpecularLayer::createLayer(aMaterial_102); auto layer103 = SpecularLayer::createLayer(aMaterial_103); - m_Layer = CMultiPaneSpecular::create({layer102, layer103}, loadSolarRadiationFile()); + m_Layer = CMultiPaneSpecular::create({layer102, layer103}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); + } public: - std::shared_ptr getLayer() const + [[nodiscard]] std::shared_ptr getLayer() const { return m_Layer; }; }; -TEST_F(EquivalentSpecularLayer_102_103, TestAngle0) +TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle0) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); @@ -226,56 +221,56 @@ TEST_F(EquivalentSpecularLayer_102_103, TestAngle0) const double T = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.652311, T, 1e-6); + EXPECT_NEAR(0.65229527465721349, T, 1e-6); const double Rf = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.124742, Rf, 1e-6); + EXPECT_NEAR(0.12473355299988206, Rf, 1e-6); const double Rb = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.116623, Rb, 1e-6); + EXPECT_NEAR(0.11661434024905955, Rb, 1e-6); const std::vector AbsorptanceFront{aLayer.getAbsorptanceLayers( minLambda, maxLambda, Side::Front, ScatteringSimple::Direct, angle, 0)}; const double AbsFront1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.096057, AbsFront1, 1e-6); - EXPECT_NEAR(0.096057, AbsorptanceFront[0], 1e-6); + EXPECT_NEAR(0.096067402665126034, AbsFront1, 1e-6); + EXPECT_NEAR(0.096067402665126034, AbsorptanceFront[0], 1e-6); const double AbsFront2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.126891, AbsFront2, 1e-6); - EXPECT_NEAR(0.126891, AbsorptanceFront[1], 1e-6); + EXPECT_NEAR(0.12690376967777861, AbsFront2, 1e-6); + EXPECT_NEAR(0.12690376967777861, AbsorptanceFront[1], 1e-6); const std::vector AbsorptanceBack{aLayer.getAbsorptanceLayers( minLambda, maxLambda, Side::Back, ScatteringSimple::Direct, angle, 0)}; const double AbsBack1 = aLayer.getAbsorptanceLayer(1, Side::Back, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.167126, AbsBack1, 1e-6); - EXPECT_NEAR(0.167126, AbsorptanceBack[0], 1e-6); + EXPECT_NEAR(0.16714188545079209, AbsBack1, 1e-6); + EXPECT_NEAR(0.16714188545079209, AbsorptanceBack[0], 1e-6); const double AbsBack2 = aLayer.getAbsorptanceLayer(2, Side::Back, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.063941, AbsBack2, 1e-6); - EXPECT_NEAR(0.063941, AbsorptanceBack[1], 1e-6); + EXPECT_NEAR(0.063948499642935183, AbsBack2, 1e-6); + EXPECT_NEAR(0.063948499642935183, AbsorptanceBack[1], 1e-6); const double Them = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.552557, Them, 1e-6); + EXPECT_NEAR(0.55254043812883435, Them, 1e-6); const double Rfhem = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.201492, Rfhem, 1e-6); + EXPECT_NEAR(0.20148222722498713, Rfhem, 1e-6); const double Rbhem = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.187542, Rbhem, 1e-6); + EXPECT_NEAR(0.1875316037471744, Rbhem, 1e-6); } -TEST_F(EquivalentSpecularLayer_102_103, TestAngle10) +TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle10) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 10 deg."); @@ -285,26 +280,26 @@ TEST_F(EquivalentSpecularLayer_102_103, TestAngle10) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.651217, T, 1e-6); + EXPECT_NEAR(0.6512009408137408, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.124649, Rf, 1e-6); + EXPECT_NEAR(0.12464131190038928, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.116493, Rb, 1e-6); + EXPECT_NEAR(0.11648460372395195, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.096633, Abs1, 1e-6); + EXPECT_NEAR(0.096643889655207982, Abs1, 1e-6); const double Abs2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.127501, Abs2, 1e-6); + EXPECT_NEAR(0.12751385763066228, Abs2, 1e-6); } -TEST_F(EquivalentSpecularLayer_102_103, TestAngle20) +TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle20) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 20 deg."); @@ -314,26 +309,26 @@ TEST_F(EquivalentSpecularLayer_102_103, TestAngle20) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.647525, T, 1e-6); + EXPECT_NEAR(0.64750874044040407, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.124841, Rf, 1e-6); + EXPECT_NEAR(0.12483246115747181, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.116543, Rb, 1e-6); + EXPECT_NEAR(0.11653428886495588, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.098370, Abs1, 1e-6); + EXPECT_NEAR(0.098381037477157776, Abs1, 1e-6); const double Abs2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.129265, Abs2, 1e-6); + EXPECT_NEAR(0.12927776092496646, Abs2, 1e-6); } -TEST_F(EquivalentSpecularLayer_102_103, TestAngle30) +TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle30) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 30 deg."); @@ -343,26 +338,26 @@ TEST_F(EquivalentSpecularLayer_102_103, TestAngle30) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.639726, T, 1e-6); + EXPECT_NEAR(0.6397093404230586, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.127056, Rf, 1e-6); + EXPECT_NEAR(0.12704776228943535, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.118400, Rb, 1e-6); + EXPECT_NEAR(0.11839109688423785, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.101292, Abs1, 1e-6); + EXPECT_NEAR(0.10130303643061224, Abs1, 1e-6); const double Abs2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.131927, Abs2, 1e-6); + EXPECT_NEAR(0.13193986085689391, Abs2, 1e-6); } -TEST_F(EquivalentSpecularLayer_102_103, TestAngle40) +TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle40) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 40 deg."); @@ -372,26 +367,26 @@ TEST_F(EquivalentSpecularLayer_102_103, TestAngle40) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.624158, T, 1e-6); + EXPECT_NEAR(0.62414048337519745, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.135563, Rf, 1e-6); + EXPECT_NEAR(0.13555493484076114, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.126036, Rb, 1e-6); + EXPECT_NEAR(0.12602697935816962, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.105447, Abs1, 1e-6); + EXPECT_NEAR(0.10545945033456472, Abs1, 1e-6); const double Abs2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.134831, Abs2, 1e-6); + EXPECT_NEAR(0.13484513144947669, Abs2, 1e-6); } -TEST_F(EquivalentSpecularLayer_102_103, TestAngleHemispherical10) +TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngleHemispherical10) { SCOPED_TRACE("Begin Test: Hemispherical to hemispherical with ten integration points."); @@ -403,28 +398,28 @@ TEST_F(EquivalentSpecularLayer_102_103, TestAngleHemispherical10) double Tfhem = aLayer.getHemisphericalProperty(Side::Front, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.552557, Tfhem, 1e-6); + EXPECT_NEAR(0.55254043812883435, Tfhem, 1e-6); double Tbhem = aLayer.getHemisphericalProperty(Side::Back, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.552557, Tbhem, 1e-6); + EXPECT_NEAR(0.55254043812883435, Tbhem, 1e-6); double Rfhem = aLayer.getHemisphericalProperty(Side::Front, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.201492, Rfhem, 1e-6); + EXPECT_NEAR(0.20148222722498713, Rfhem, 1e-6); double Rbhem = aLayer.getHemisphericalProperty(Side::Back, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.187542, Rbhem, 1e-6); + EXPECT_NEAR(0.1875316037471744, Rbhem, 1e-6); double Abs1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.108915, Abs1, 1e-6); + EXPECT_NEAR(0.10892818665399433, Abs1, 1e-6); double Abs2 = aLayer.AbsHemispherical(2, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.126861, Abs2, 1e-6); + EXPECT_NEAR(0.12687455360042596, Abs2, 1e-6); } -TEST_F(EquivalentSpecularLayer_102_103, TestAngleHemispherical19) +TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngleHemispherical19) { SCOPED_TRACE("Begin Test: Hemispherical to hemispherical with nineteen integration points."); @@ -437,34 +432,34 @@ TEST_F(EquivalentSpecularLayer_102_103, TestAngleHemispherical19) double Tfhem = aLayer.getHemisphericalProperty(Side::Front, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.554931, Tfhem, 1e-6); + EXPECT_NEAR(0.55491389662002732, Tfhem, 1e-6); double Tbhem = aLayer.getHemisphericalProperty(Side::Back, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.554931, Tbhem, 1e-6); + EXPECT_NEAR(0.55491389662002732, Tbhem, 1e-6); double Rfhem = aLayer.getHemisphericalProperty(Side::Front, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.205582, Rfhem, 1e-6); + EXPECT_NEAR(0.20557297581589185, Rfhem, 1e-6); double Rbhem = aLayer.getHemisphericalProperty(Side::Back, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.191550, Rbhem, 1e-6); + EXPECT_NEAR(0.19154036259734128, Rbhem, 1e-6); const auto AbsFront1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.109579, AbsFront1, 1e-6); + EXPECT_NEAR(0.10959216916044692, AbsFront1, 1e-6); const auto AbsFront2 = aLayer.AbsHemispherical(2, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.127368, AbsFront2, 1e-6); + EXPECT_NEAR(0.12738119019535987, AbsFront2, 1e-6); const auto AbsBack1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Back); - EXPECT_NEAR(0.187057, AbsBack1, 1e-6); + EXPECT_NEAR(0.18707512921364519, AbsBack1, 1e-6); const auto AbsBack2 = aLayer.AbsHemispherical(2, aAngles, minLambda, maxLambda, Side::Back); - EXPECT_NEAR(0.063923, AbsBack2, 1e-6); + EXPECT_NEAR(0.063930843360712114, AbsBack2, 1e-6); } -TEST_F(EquivalentSpecularLayer_102_103, TestHemispherical) +TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestHemispherical) { const double minLambda = 0.3; const double maxLambda = 2.5; @@ -476,11 +471,11 @@ TEST_F(EquivalentSpecularLayer_102_103, TestHemispherical) double Abs1 = aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Diffuse); - EXPECT_NEAR(0.108915, Abs1, 1e-6); - EXPECT_NEAR(0.108915, absorptances[0], 1e-6); + EXPECT_NEAR(0.10892818665399433, Abs1, 1e-6); + EXPECT_NEAR(0.10892818665399433, absorptances[0], 1e-6); double Abs2 = aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Diffuse); - EXPECT_NEAR(0.126861, Abs2, 1e-6); - EXPECT_NEAR(0.126861, absorptances[1], 1e-6); + EXPECT_NEAR(0.12687455360042596, Abs2, 1e-6); + EXPECT_NEAR(0.12687455360042596, absorptances[1], 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_IR_Range.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_IR_Range.unit.cpp similarity index 97% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_IR_Range.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_IR_Range.unit.cpp index c5fc5bd8..c386fab5 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_IR_Range.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_IR_Range.unit.cpp @@ -11,7 +11,7 @@ using namespace FenestrationCommon; using namespace SpectralAveraging; using namespace MultiLayerOptics; -class EquivalentSpecularLayer_102_103_IR_Range : public testing::Test +class MultiPaneSpecular_102_103_IR_Range : public testing::Test { protected: std::shared_ptr loadSampleData_NFRC_102() @@ -84,7 +84,7 @@ class EquivalentSpecularLayer_102_103_IR_Range : public testing::Test public: }; -TEST_F(EquivalentSpecularLayer_102_103_IR_Range, TestNoAvailableData) +TEST_F(MultiPaneSpecular_102_103_IR_Range, TestNoAvailableData) { const auto minLambda = 5.0; const auto maxLambda = 100.0; diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_Visible_Range.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_Visible_Range.unit.cpp similarity index 97% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_Visible_Range.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_Visible_Range.unit.cpp index 83b1a5df..12f0b07e 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_102_103_Visible_Range.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_Visible_Range.unit.cpp @@ -336,24 +336,22 @@ class EquivalentSpecularLayer_102_103_Visible_Range : public testing::Test const auto aMaterial_102 = Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, minLambda, maxLambda); - aMaterial_102->setBandWavelengths(getWavelengths()); - thickness = 5.715e-3; // [m] const auto aMaterial_103 = Material::nBandMaterial( loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, minLambda, maxLambda); - aMaterial_103->setBandWavelengths(getWavelengths()); - const auto layer102 = SpecularLayer::createLayer(aMaterial_102); const auto layer103 = SpecularLayer::createLayer(aMaterial_103); CSeries detectorData{getDetectorData()}; - m_Layer = - CMultiPaneSpecular::create({layer102, layer103}, getSourceSpectrum(), detectorData); + m_Layer = CMultiPaneSpecular::create({layer102, layer103}); + + const CalculationProperties input{getSourceSpectrum(), getWavelengths(), detectorData}; + m_Layer->setCalculationProperties(input); } public: - std::shared_ptr getLayer() const + [[nodiscard]] std::shared_ptr getLayer() const { return m_Layer; }; @@ -368,7 +366,7 @@ TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngle0) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.800040, T, 1e-6); + EXPECT_NEAR(0.80004116239060297, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); @@ -380,15 +378,15 @@ TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngle0) const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.036833, Abs1, 1e-6); + EXPECT_NEAR(0.019482417027709444, Abs1, 1e-6); const double Abs2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.056681, Abs2, 1e-6); + EXPECT_NEAR(0.032440156277910373, Abs2, 1e-6); const double Them = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.697288, Them, 1e-6); + EXPECT_NEAR(0.69728960814264751, Them, 1e-6); const double Rfhem = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); @@ -409,7 +407,7 @@ TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngle10) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.799712, T, 1e-6); + EXPECT_NEAR(0.79971340390661316, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); @@ -421,11 +419,11 @@ TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngle10) const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.037065, Abs1, 1e-6); + EXPECT_NEAR(0.019607658230143151, Abs1, 1e-6); const double Abs2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.057009, Abs2, 1e-6); + EXPECT_NEAR(0.032641877809576232, Abs2, 1e-6); } TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngleHemispherical10) @@ -440,11 +438,11 @@ TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngleHemispherical10) double Tfhem = aLayer.getHemisphericalProperty(Side::Front, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.697288, Tfhem, 1e-6); + EXPECT_NEAR(0.69728960814264751, Tfhem, 1e-6); double Tbhem = aLayer.getHemisphericalProperty(Side::Back, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.697288, Tbhem, 1e-6); + EXPECT_NEAR(0.69728960814264751, Tbhem, 1e-6); double Rfhem = aLayer.getHemisphericalProperty(Side::Front, Property::R, aAngles, minLambda, maxLambda); @@ -455,8 +453,8 @@ TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngleHemispherical10) EXPECT_NEAR(0.230712, Rbhem, 1e-6); double Abs1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.042672, Abs1, 1e-6); + EXPECT_NEAR(0.022818163375237097, Abs1, 1e-6); double Abs2 = aLayer.AbsHemispherical(2, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.058583, Abs2, 1e-6); + EXPECT_NEAR(0.034076425843029154, Abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_1042_103_FirstLayerFlipped.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_1042_103_FirstLayerFlipped.unit.cpp similarity index 96% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_1042_103_FirstLayerFlipped.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_1042_103_FirstLayerFlipped.unit.cpp index 044076f4..3f60be62 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_1042_103_FirstLayerFlipped.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_1042_103_FirstLayerFlipped.unit.cpp @@ -11,7 +11,7 @@ using namespace FenestrationCommon; using namespace SpectralAveraging; using namespace MultiLayerOptics; -class EquivalentSpecularLayer_1042_103_FirstLayerFlipped : public testing::Test +class MultiPaneSpecular_1042_103_FirstLayerFlipped : public testing::Test { private: std::shared_ptr m_Layer; @@ -372,28 +372,23 @@ class EquivalentSpecularLayer_1042_103_FirstLayerFlipped : public testing::Test protected: virtual void SetUp() { - const auto aSolarRadiation = loadSolarRadiationFile(); - - // Wavelength data set according to NFRC 2003 standard is from solar radiation file - const auto wl = aSolarRadiation.getXArray(); - double thickness = 3.18e-3; // [m] const auto aMaterial_1042 = Material::nBandMaterial( loadSampleData_NFRC_1042(), thickness, MaterialType::Coated, WavelengthRange::Solar); - aMaterial_1042->setBandWavelengths(wl); - thickness = 5.715e-3; // [m] const auto aMaterial_103 = Material::nBandMaterial( loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - aMaterial_103->setBandWavelengths(wl); - auto layer1042 = SpecularLayer::createLayer(aMaterial_1042); layer1042->Flipped(true); const auto layer103 = SpecularLayer::createLayer(aMaterial_103); - m_Layer = CMultiPaneSpecular::create({layer1042, layer103}, loadSolarRadiationFile()); + m_Layer = CMultiPaneSpecular::create({layer1042, layer103}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -403,7 +398,7 @@ class EquivalentSpecularLayer_1042_103_FirstLayerFlipped : public testing::Test } }; -TEST_F(EquivalentSpecularLayer_1042_103_FirstLayerFlipped, TestAngle0) +TEST_F(MultiPaneSpecular_1042_103_FirstLayerFlipped, TestAngle0) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); @@ -413,38 +408,38 @@ TEST_F(EquivalentSpecularLayer_1042_103_FirstLayerFlipped, TestAngle0) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.372156, T, 1e-6); + EXPECT_NEAR(0.3719583755488084, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.416867, Rf, 1e-6); + EXPECT_NEAR(0.41715457981977144, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.280251, Rb, 1e-6); + EXPECT_NEAR(0.28037294048520067, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.156340, Abs1, 1e-6); + EXPECT_NEAR(0.15627839622413103, Abs1, 1e-6); const double Abs2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.054637, Abs2, 1e-6); + EXPECT_NEAR(0.054608648407289261, Abs2, 1e-6); const double Them = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.308334, Them, 1e-6); + EXPECT_NEAR(0.30817022451966275, Them, 1e-6); const double Rfhem = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.449158, Rfhem, 1e-6); + EXPECT_NEAR(0.44942446269438591, Rfhem, 1e-6); const double Rbhem = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.315825, Rbhem, 1e-6); + EXPECT_NEAR(0.31592238140198325, Rbhem, 1e-6); } -TEST_F(EquivalentSpecularLayer_1042_103_FirstLayerFlipped, TestAngle40) +TEST_F(MultiPaneSpecular_1042_103_FirstLayerFlipped, TestAngle40) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 40 deg."); @@ -454,21 +449,21 @@ TEST_F(EquivalentSpecularLayer_1042_103_FirstLayerFlipped, TestAngle40) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.349966, T, 1e-6); + EXPECT_NEAR(0.34978043617677002, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.420030, Rf, 1e-6); + EXPECT_NEAR(0.42031579031787092, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.277671, Rb, 1e-6); + EXPECT_NEAR(0.27778429648957981, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.172751, Abs1, 1e-6); + EXPECT_NEAR(0.1726805764239672, Abs1, 1e-6); const double Abs2 = aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.057253, Abs2, 1e-6); + EXPECT_NEAR(0.057223197081391772, Abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_21467.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_21467.unit.cpp similarity index 95% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_21467.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_21467.unit.cpp index 2ad2dc38..f3ea3f3b 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_21467.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_21467.unit.cpp @@ -215,24 +215,21 @@ class EquivalentSpecularLayer_21467 : public testing::Test protected: virtual void SetUp() { - const auto aSolarRadiation = loadSolarRadiationFile(); - - // Wavelength data set according to NFRC 2003 standard is from solar radiation file - const auto wl = aSolarRadiation.getXArray(); - double thickness = 3.0e-3; // [m] const auto aMaterial_21467 = Material::nBandMaterial( loadSampleData_NFRC_21467(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - aMaterial_21467->setBandWavelengths(wl); - const auto layer102 = SpecularLayer::createLayer(aMaterial_21467); - m_Layer = CMultiPaneSpecular::create({layer102}, loadSolarRadiationFile()); + m_Layer = CMultiPaneSpecular::create({layer102}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: - std::shared_ptr getLayer() const + [[nodiscard]] std::shared_ptr getLayer() const { return m_Layer; }; @@ -248,31 +245,31 @@ TEST_F(EquivalentSpecularLayer_21467, TestAngle0) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.857620, T, 1e-6); + EXPECT_NEAR(0.85759475979163102, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.108847, Rf, 1e-6); + EXPECT_NEAR(0.10882832466003842, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.114567, Rb, 1e-6); + EXPECT_NEAR(0.11455238848477553, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.033532, Abs1, 1e-6); + EXPECT_NEAR(0.033576915548329998, Abs1, 1e-6); const double Them = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.783723, Them, 1e-6); + EXPECT_NEAR(0.7836942732385721, Them, 1e-6); const double Rfhem = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.169476, Rfhem, 1e-6); + EXPECT_NEAR(0.16945613901722306, Rfhem, 1e-6); const double Rbhem = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.174748, Rbhem, 1e-6); + EXPECT_NEAR(0.17473195757158716, Rbhem, 1e-6); } TEST_F(EquivalentSpecularLayer_21467, TestAngleHemispherical10) @@ -287,20 +284,20 @@ TEST_F(EquivalentSpecularLayer_21467, TestAngleHemispherical10) double Tfhem = aLayer.getHemisphericalProperty(Side::Front, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.783723, Tfhem, 1e-6); + EXPECT_NEAR(0.7836942732385721, Tfhem, 1e-6); double Tbhem = aLayer.getHemisphericalProperty(Side::Back, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.783723, Tbhem, 1e-6); + EXPECT_NEAR(0.7836942732385721, Tbhem, 1e-6); double Rfhem = aLayer.getHemisphericalProperty(Side::Front, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.169476, Rfhem, 1e-6); + EXPECT_NEAR(0.16945613901722306, Rfhem, 1e-6); double Rbhem = aLayer.getHemisphericalProperty(Side::Back, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.174748, Rbhem, 1e-6); + EXPECT_NEAR(0.17473195757158716, Rbhem, 1e-6); double Abs1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.036625, Abs1, 1e-6); + EXPECT_NEAR(0.036674993352446866, Abs1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_6046.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_6046.unit.cpp similarity index 89% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_6046.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_6046.unit.cpp index 6851c3ba..64affaf4 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_6046.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_6046.unit.cpp @@ -11,7 +11,7 @@ using namespace FenestrationCommon; using namespace SpectralAveraging; using namespace MultiLayerOptics; -class EquivalentSpecularLayer_6046 : public testing::Test +class MultiPaneSpecular_6046 : public testing::Test { private: std::shared_ptr m_Layer; @@ -110,30 +110,27 @@ class EquivalentSpecularLayer_6046 : public testing::Test protected: virtual void SetUp() { - const auto aSolarRadiation = loadSolarRadiationFile(); - - // Wavelength data set according to NFRC 2003 standard is from solar radiation file - const auto wl = aSolarRadiation.getXArray(); - double thickness = 5.66e-3; // [m] const auto aMaterial_6046 = Material::nBandMaterial( loadSampleData_NFRC_6046(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); - aMaterial_6046->setBandWavelengths(wl); - const auto layer102 = SpecularLayer::createLayer(aMaterial_6046); - m_Layer = CMultiPaneSpecular::create({layer102}, loadSolarRadiationFile()); + m_Layer = CMultiPaneSpecular::create({layer102}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: - std::shared_ptr getLayer() const + [[nodiscard]] std::shared_ptr getLayer() const { return m_Layer; }; }; -TEST_F(EquivalentSpecularLayer_6046, TestAngle0) +TEST_F(MultiPaneSpecular_6046, TestAngle0) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); @@ -143,34 +140,34 @@ TEST_F(EquivalentSpecularLayer_6046, TestAngle0) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.383209, T, 1e-6); + EXPECT_NEAR(0.38299706431771591, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.285971, Rf, 1e-6); + EXPECT_NEAR(0.28616972912819455, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.449239, Rb, 1e-6); + EXPECT_NEAR(0.44953481057588385, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.330818, Abs1, 1e-6); + EXPECT_NEAR(0.33083320655408976, Abs1, 1e-6); const double Them = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.349505, Them, 1e-6); + EXPECT_NEAR(0.34930792564766677, Them, 1e-6); const double Rfhem = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.303384, Rfhem, 1e-6); + EXPECT_NEAR(0.30355611406159649, Rfhem, 1e-6); const double Rbhem = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.458336, Rbhem, 1e-6); + EXPECT_NEAR(0.45861965268430771, Rbhem, 1e-6); } -TEST_F(EquivalentSpecularLayer_6046, TestAngle10) +TEST_F(MultiPaneSpecular_6046, TestAngle10) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 10 deg."); @@ -180,22 +177,22 @@ TEST_F(EquivalentSpecularLayer_6046, TestAngle10) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.382717, T, 1e-6); + EXPECT_NEAR(0.38250500788015518, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.285927, Rf, 1e-6); + EXPECT_NEAR(0.28612567799481614, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.449203, Rb, 1e-6); + EXPECT_NEAR(0.44949838906463818, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.331354, Abs1, 1e-6); + EXPECT_NEAR(0.33136931412502829, Abs1, 1e-6); } -TEST_F(EquivalentSpecularLayer_6046, TestAngleHemispherical10) +TEST_F(MultiPaneSpecular_6046, TestAngleHemispherical10) { SCOPED_TRACE("Begin Test: Hemispherical to hemispherical with ten integration points."); @@ -207,20 +204,20 @@ TEST_F(EquivalentSpecularLayer_6046, TestAngleHemispherical10) double Tfhem = aLayer.getHemisphericalProperty(Side::Front, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.349505, Tfhem, 1e-6); + EXPECT_NEAR(0.34930792564766677, Tfhem, 1e-6); double Tbhem = aLayer.getHemisphericalProperty(Side::Back, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.349505, Tbhem, 1e-6); + EXPECT_NEAR(0.34930792564766677, Tbhem, 1e-6); double Rfhem = aLayer.getHemisphericalProperty(Side::Front, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.303384, Rfhem, 1e-6); + EXPECT_NEAR(0.30355611406159649, Rfhem, 1e-6); double Rbhem = aLayer.getHemisphericalProperty(Side::Back, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.458336, Rbhem, 1e-6); + EXPECT_NEAR(0.45861965268430771, Rbhem, 1e-6); double Abs1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.336936, Abs1, 1e-6); + EXPECT_NEAR(0.33696136589897857, Abs1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_NFRC2600.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC2600.unit.cpp similarity index 93% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_NFRC2600.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC2600.unit.cpp index 13c65ba8..71af0ef5 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_NFRC2600.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC2600.unit.cpp @@ -11,7 +11,7 @@ using namespace FenestrationCommon; using namespace SpectralAveraging; using namespace MultiLayerOptics; -class EquivalentSpecularLayer_NFRC2600 : public testing::Test +class MultiPaneSpecular_NFRC2600 : public testing::Test { private: std::shared_ptr m_Layer; @@ -216,17 +216,21 @@ class EquivalentSpecularLayer_NFRC2600 : public testing::Test const auto layer2600 = SpecularLayer::createLayer(aMaterial_2600); - m_Layer = CMultiPaneSpecular::create({layer2600}, loadSolarRadiationFile()); + m_Layer = CMultiPaneSpecular::create({layer2600}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: - std::shared_ptr getLayer() const + [[nodiscard]] std::shared_ptr getLayer() const { return m_Layer; }; }; -TEST_F(EquivalentSpecularLayer_NFRC2600, TestAngle0) +TEST_F(MultiPaneSpecular_NFRC2600, TestAngle0) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); @@ -236,22 +240,22 @@ TEST_F(EquivalentSpecularLayer_NFRC2600, TestAngle0) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.853646, T, 1e-6); + EXPECT_NEAR(0.85364295496596676, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.070509, Rf, 1e-6); + EXPECT_NEAR(0.070590408730950835, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.070371, Rb, 1e-6); + EXPECT_NEAR(0.070317441387705334, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.075845, Abs1, 1e-6); + EXPECT_NEAR(0.075766636303082432, Abs1, 1e-6); } -TEST_F(EquivalentSpecularLayer_NFRC2600, TestAngle10) +TEST_F(MultiPaneSpecular_NFRC2600, TestAngle10) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 10 deg."); @@ -261,22 +265,22 @@ TEST_F(EquivalentSpecularLayer_NFRC2600, TestAngle10) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.853399, T, 1e-6); + EXPECT_NEAR(0.85339696288847755, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.070521, Rf, 1e-6); + EXPECT_NEAR(0.070603265452464065, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.070383, Rb, 1e-6); + EXPECT_NEAR(0.070330211466021975, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.076079, Abs1, 1e-6); + EXPECT_NEAR(0.075999771659058385, Abs1, 1e-6); } -TEST_F(EquivalentSpecularLayer_NFRC2600, TestAngle20) +TEST_F(MultiPaneSpecular_NFRC2600, TestAngle20) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 20 deg."); @@ -290,18 +294,18 @@ TEST_F(EquivalentSpecularLayer_NFRC2600, TestAngle20) const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.070860, Rf, 1e-6); + EXPECT_NEAR(0.070942533307403133, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.070721, Rb, 1e-6); + EXPECT_NEAR(0.070668784173020249, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.076762, Abs1, 1e-6); + EXPECT_NEAR(0.076680058161091746, Abs1, 1e-6); } -TEST_F(EquivalentSpecularLayer_NFRC2600, TestAngleHemispherical10) +TEST_F(MultiPaneSpecular_NFRC2600, TestAngleHemispherical10) { SCOPED_TRACE("Begin Test: Hemispherical to hemispherical with ten integration points."); @@ -313,20 +317,20 @@ TEST_F(EquivalentSpecularLayer_NFRC2600, TestAngleHemispherical10) double Tfhem = aLayer.getHemisphericalProperty(Side::Front, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.778433, Tfhem, 1e-6); + EXPECT_NEAR(0.77845552949593655, Tfhem, 1e-6); double Tbhem = aLayer.getHemisphericalProperty(Side::Back, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.778433, Tbhem, 1e-6); + EXPECT_NEAR(0.77845552949593655, Tbhem, 1e-6); double Rfhem = aLayer.getHemisphericalProperty(Side::Front, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.134634, Rfhem, 1e-6); + EXPECT_NEAR(0.13474572707890642, Rfhem, 1e-6); double Rbhem = aLayer.getHemisphericalProperty(Side::Back, Property::R, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.134494, Rbhem, 1e-6); + EXPECT_NEAR(0.13445032501853083, Rbhem, 1e-6); double Abs1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.076758, Abs1, 1e-6); + EXPECT_NEAR(0.076624149033398592, Abs1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_NFRC913.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC913.unit.cpp similarity index 91% rename from src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_NFRC913.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC913.unit.cpp index 0e08e42a..c9e024c0 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularLayer_NFRC913.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC913.unit.cpp @@ -11,7 +11,7 @@ using namespace FenestrationCommon; using namespace SpectralAveraging; using namespace MultiLayerOptics; -class EquivalentSpecularLayer_NFRC913 : public testing::Test +class MultiPaneSpecular_NFRC913 : public testing::Test { private: std::shared_ptr m_Layer; @@ -147,17 +147,21 @@ class EquivalentSpecularLayer_NFRC913 : public testing::Test const auto layer913 = SpecularLayer::createLayer(aMaterial_913); - m_Layer = CMultiPaneSpecular::create({layer913}, loadSolarRadiationFile()); + m_Layer = CMultiPaneSpecular::create({layer913}); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: - std::shared_ptr getLayer() const + [[nodiscard]] std::shared_ptr getLayer() const { return m_Layer; }; }; -TEST_F(EquivalentSpecularLayer_NFRC913, TestAngle0) +TEST_F(MultiPaneSpecular_NFRC913, TestAngle0) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); @@ -167,22 +171,22 @@ TEST_F(EquivalentSpecularLayer_NFRC913, TestAngle0) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.513367, T, 1e-6); + EXPECT_NEAR(0.51340435548935426, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055074, Rf, 1e-6); + EXPECT_NEAR(0.055076203505663293, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055074, Rb, 1e-6); + EXPECT_NEAR(0.055076203505663293, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.431559, Abs1, 1e-6); + EXPECT_NEAR(0.43151944100498218, Abs1, 1e-6); } -TEST_F(EquivalentSpecularLayer_NFRC913, TestAngle10) +TEST_F(MultiPaneSpecular_NFRC913, TestAngle10) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 10 deg."); @@ -192,22 +196,22 @@ TEST_F(EquivalentSpecularLayer_NFRC913, TestAngle10) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.511677, T, 1e-6); + EXPECT_NEAR(0.51171451360613374, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055026, Rf, 1e-6); + EXPECT_NEAR(0.05502860699106308, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055026, Rb, 1e-6); + EXPECT_NEAR(0.05502860699106308, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.433297, Abs1, 1e-6); + EXPECT_NEAR(0.43325687940280283, Abs1, 1e-6); } -TEST_F(EquivalentSpecularLayer_NFRC913, TestAngle20) +TEST_F(MultiPaneSpecular_NFRC913, TestAngle20) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 20 deg."); @@ -217,22 +221,22 @@ TEST_F(EquivalentSpecularLayer_NFRC913, TestAngle20) const double T = aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.506483, T, 1e-6); + EXPECT_NEAR(0.50652088749674984, T, 1e-6); const double Rf = aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055132, Rf, 1e-6); + EXPECT_NEAR(0.055135008696623841, Rf, 1e-6); const double Rb = aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055132, Rb, 1e-6); + EXPECT_NEAR(0.055135008696623841, Rb, 1e-6); const double Abs1 = aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.438385, Abs1, 1e-6); + EXPECT_NEAR(0.43834410380662625, Abs1, 1e-6); } -TEST_F(EquivalentSpecularLayer_NFRC913, TestAngleHemispherical10) +TEST_F(MultiPaneSpecular_NFRC913, TestAngleHemispherical10) { SCOPED_TRACE("Begin Test: Hemispherical to hemispherical with ten integration points."); @@ -244,11 +248,11 @@ TEST_F(EquivalentSpecularLayer_NFRC913, TestAngleHemispherical10) double Tfhem = aLayer.getHemisphericalProperty(Side::Front, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.439701, Tfhem, 1e-6); + EXPECT_NEAR(0.43975348432468581, Tfhem, 1e-6); double Tbhem = aLayer.getHemisphericalProperty(Side::Back, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.4397006, Tbhem, 1e-6); + EXPECT_NEAR(0.43975348432468581, Tbhem, 1e-6); double Rfhem = aLayer.getHemisphericalProperty(Side::Front, Property::R, aAngles, minLambda, maxLambda); @@ -259,5 +263,5 @@ TEST_F(EquivalentSpecularLayer_NFRC913, TestAngleHemispherical10) EXPECT_NEAR(0.106320, Rbhem, 1e-6); double Abs1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.443805, Abs1, 1e-6); + EXPECT_NEAR(0.44375256500392263, Abs1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular.unit.cpp index 9a71e957..885182c1 100644 --- a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular.unit.cpp @@ -329,8 +329,11 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test CSeries solarRadiation{loadSolarRadiationFile()}; single_layer->setSourceData(solarRadiation); - auto layer = MultiLayerOptics::CMultiPaneSpecular::create( - {single_layer}, loadSolarRadiationFile(), astmStandard); + auto layer = MultiLayerOptics::CMultiPaneSpecular::create({single_layer}); + + const MultiLayerOptics::CalculationProperties input{ + loadSolarRadiationFile(), loadWavelengths(), astmStandard}; + layer->setCalculationProperties(input); return layer; } @@ -355,7 +358,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test } public: - std::shared_ptr getLayer() const + [[nodiscard]] std::shared_ptr getLayer() const { return m_Color; } diff --git a/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example1.unit.cpp b/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example1.unit.cpp index 6aecfd39..b230d73c 100644 --- a/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example1.unit.cpp @@ -1801,7 +1801,6 @@ class Photovoltaic_DoublePane_Example1 : public testing::Test protected: virtual void SetUp() { - auto pvSample = std::make_shared( *loadSampleData_1(), eqeFront(), eqeBack()); @@ -1820,7 +1819,11 @@ class Photovoltaic_DoublePane_Example1 : public testing::Test const auto layer1 = SingleLayerOptics::PhotovoltaicSpecularLayer::createLayer(aMaterial_1, table()); - m_Layer = CMultiPaneSpecular::create({layer1}, aSolarRadiation); + m_Layer = CMultiPaneSpecular::create({layer1}); + + const MultiLayerOptics::CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -1845,8 +1848,8 @@ TEST_F(Photovoltaic_DoublePane_Example1, Test1) EXPECT_NEAR(0.2, T, 1e-6); const double absHeat = aLayer.AbsHeat(1, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.670864, absHeat, 1e-6); + EXPECT_NEAR(0.670842, absHeat, 1e-6); const double absEl1 = aLayer.AbsElectricity(1, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.106229, absEl1, 1e-6); + EXPECT_NEAR(0.106243, absEl1, 1e-6); } \ No newline at end of file diff --git a/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example2.unit.cpp b/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example2.unit.cpp index 6c16bad5..831638f4 100644 --- a/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example2.unit.cpp +++ b/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example2.unit.cpp @@ -1838,7 +1838,11 @@ class Photovoltaic_DoublePane_Example2 : public testing::Test const auto layer1 = SingleLayerOptics::PhotovoltaicSpecularLayer::createLayer(aMaterial_1, table()); - m_Layer = CMultiPaneSpecular::create({layer1}, loadSolarRadiationFile()); + m_Layer = CMultiPaneSpecular::create({layer1}); + + const MultiLayerOptics::CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); } public: @@ -1863,8 +1867,8 @@ TEST_F(Photovoltaic_DoublePane_Example2, Test1) EXPECT_NEAR(0.2, T, 1e-6); const double absHeat = aLayer.AbsHeat(1, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.673905, absHeat, 1e-6); + EXPECT_NEAR(0.6712760, absHeat, 1e-6); const double absEl1 = aLayer.AbsElectricity(1, angle, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.103805, absEl1, 1e-6); + EXPECT_NEAR(0.105174, absEl1, 1e-6); } \ No newline at end of file diff --git a/src/MultiLayerOptics/tst/units/SpecularLayer_DualBand.unit.cpp b/src/MultiLayerOptics/tst/units/SpecularLayer_DualBand.unit.cpp index 96fa7b1e..6f56eaef 100644 --- a/src/MultiLayerOptics/tst/units/SpecularLayer_DualBand.unit.cpp +++ b/src/MultiLayerOptics/tst/units/SpecularLayer_DualBand.unit.cpp @@ -69,7 +69,11 @@ TEST_F(TestSpecularLayer_102, TestSpecularDualBandSingleLayer1) const auto aLayer = SingleLayerOptics::SpecularLayer::createLayer(aMaterial); - auto igu{MultiLayerOptics::CMultiPaneSpecular::create({aLayer}, loadSolarRadiationFile())}; + auto igu{MultiLayerOptics::CMultiPaneSpecular::create({aLayer})}; + + const MultiLayerOptics::CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + igu->setCalculationProperties(input); const auto minLambda{0.3}; const auto maxlambda{2.5}; From 1dad8e471862da5e72d9b728bc3ea831a469f3dc Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 4 Aug 2022 10:59:41 -0700 Subject: [PATCH 44/81] Color unit test is now using condensed spectrum example. --- ...ltiPaneSpecular_CondensedSpectrum.unit.cpp | 476 ++++++++++++++++++ ...s_MultiPaneSpecular_FullSpectrum.unit.cpp} | 42 +- 2 files changed, 496 insertions(+), 22 deletions(-) create mode 100644 src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum.unit.cpp rename src/MultiLayerOptics/tst/units/{NFRC_5439_SB70XL_Colors_MultiPaneSpecular.unit.cpp => NFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum.unit.cpp} (95%) diff --git a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum.unit.cpp new file mode 100644 index 00000000..a59a8b20 --- /dev/null +++ b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum.unit.cpp @@ -0,0 +1,476 @@ +#include +#include +#include "WCEMultiLayerOptics.hpp" +#include "WCESingleLayerOptics.hpp" +#include "WCESpectralAveraging.hpp" + +using FenestrationCommon::CSeries; + +class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum : public testing::Test +{ +private: + std::shared_ptr m_Color; + + static std::vector loadWavelengths() + { + std::vector aWavelengths{ + 0.380, 0.385, 0.390, 0.395, 0.400, 0.405, 0.410, 0.415, 0.420, 0.425, 0.430, 0.435, + 0.440, 0.445, 0.450, 0.455, 0.460, 0.465, 0.470, 0.475, 0.480, 0.485, 0.490, 0.495, + 0.500, 0.505, 0.510, 0.515, 0.520, 0.525, 0.530, 0.535, 0.540, 0.545, 0.550, 0.555, + 0.560, 0.565, 0.570, 0.575, 0.580, 0.585, 0.590, 0.595, 0.600, 0.605, 0.610, 0.615, + 0.620, 0.625, 0.630, 0.635, 0.640, 0.645, 0.650, 0.655, 0.660, 0.665, 0.670, 0.675, + 0.680, 0.685, 0.690, 0.695, 0.700, 0.705, 0.710, 0.715, 0.720, 0.725, 0.730, 0.735, + 0.740, 0.745, 0.750, 0.755, 0.760, 0.765, 0.770, 0.775, 0.780}; + + return aWavelengths; + } + + static CSeries loadSolarRadiationFile() + { + // Full CIE Illuminant D651 nm ssp table (used for PHOTOPIC properties) + CSeries solarRadiation( + {{0.300, 0.0341000}, {0.301, 0.3601400}, {0.302, 0.6861800}, {0.303, 1.0122200}, + {0.304, 1.3382600}, {0.305, 1.6643000}, {0.306, 1.9903400}, {0.307, 2.3163800}, + {0.308, 2.6424200}, {0.309, 2.9684600}, {0.310, 3.2945000}, {0.311, 4.9886500}, + {0.312, 6.6828000}, {0.313, 8.3769500}, {0.314, 10.071100}, {0.315, 11.765200}, + {0.316, 13.459400}, {0.317, 15.153500}, {0.318, 16.847700}, {0.319, 18.541800}, + {0.320, 20.236000}, {0.321, 21.917700}, {0.322, 23.599500}, {0.323, 25.281200}, + {0.324, 26.963000}, {0.325, 28.644700}, {0.326, 30.326500}, {0.327, 32.008200}, + {0.328, 33.690000}, {0.329, 35.371700}, {0.330, 37.053500}, {0.331, 37.343000}, + {0.332, 37.632600}, {0.333, 37.922100}, {0.334, 38.211600}, {0.335, 38.501100}, + {0.336, 38.790700}, {0.337, 39.080200}, {0.338, 39.369700}, {0.339, 39.659300}, + {0.340, 39.948800}, {0.341, 40.445100}, {0.342, 40.941400}, {0.343, 41.437700}, + {0.344, 41.934000}, {0.345, 42.430200}, {0.346, 42.926500}, {0.347, 43.422800}, + {0.348, 43.919100}, {0.349, 44.415400}, {0.350, 44.911700}, {0.351, 45.084400}, + {0.352, 45.257000}, {0.353, 45.429700}, {0.354, 45.602300}, {0.355, 45.775000}, + {0.356, 45.947700}, {0.357, 46.120300}, {0.358, 46.293000}, {0.359, 46.465600}, + {0.360, 46.638300}, {0.361, 47.183400}, {0.362, 47.728500}, {0.363, 48.273500}, + {0.364, 48.818600}, {0.365, 49.363700}, {0.366, 49.908800}, {0.367, 50.453900}, + {0.368, 50.998900}, {0.369, 51.544000}, {0.370, 52.089100}, {0.371, 51.877700}, + {0.372, 51.666400}, {0.373, 51.455000}, {0.374, 51.243700}, {0.375, 51.032300}, + {0.376, 50.820900}, {0.377, 50.609600}, {0.378, 50.398200}, {0.379, 50.186900}, + {0.380, 49.975500}, {0.381, 50.442800}, {0.382, 50.910000}, {0.383, 51.377300}, + {0.384, 51.844600}, {0.385, 52.311800}, {0.386, 52.779100}, {0.387, 53.246400}, + {0.388, 53.713700}, {0.389, 54.180900}, {0.390, 54.648200}, {0.391, 57.458900}, + {0.392, 60.269500}, {0.393, 63.080200}, {0.394, 65.890900}, {0.395, 68.701500}, + {0.396, 71.512200}, {0.397, 74.322900}, {0.398, 77.133600}, {0.399, 79.944200}, + {0.400, 82.754900}, {0.401, 83.628000}, {0.402, 84.501100}, {0.403, 85.374200}, + {0.404, 86.247300}, {0.405, 87.120400}, {0.406, 87.993600}, {0.407, 88.866700}, + {0.408, 89.739800}, {0.409, 90.612900}, {0.410, 91.486000}, {0.411, 91.680600}, + {0.412, 91.875200}, {0.413, 92.069700}, {0.414, 92.264300}, {0.415, 92.458900}, + {0.416, 92.653500}, {0.417, 92.848100}, {0.418, 93.042600}, {0.419, 93.237200}, + {0.420, 93.431800}, {0.421, 92.756800}, {0.422, 92.081900}, {0.423, 91.406900}, + {0.424, 90.732000}, {0.425, 90.057000}, {0.426, 89.382100}, {0.427, 88.707100}, + {0.428, 88.032200}, {0.429, 87.357200}, {0.430, 86.682300}, {0.431, 88.500600}, + {0.432, 90.318800}, {0.433, 92.137100}, {0.434, 93.955400}, {0.435, 95.773600}, + {0.436, 97.591900}, {0.437, 99.410200}, {0.438, 101.22800}, {0.439, 103.04700}, + {0.440, 104.86500}, {0.441, 106.07900}, {0.442, 107.29400}, {0.443, 108.50800}, + {0.444, 109.72200}, {0.445, 110.93600}, {0.446, 112.15100}, {0.447, 113.36500}, + {0.448, 114.57900}, {0.449, 115.79400}, {0.450, 117.00800}, {0.451, 117.08800}, + {0.452, 117.16900}, {0.453, 117.24900}, {0.454, 117.33000}, {0.455, 117.41000}, + {0.456, 117.49000}, {0.457, 117.57100}, {0.458, 117.65100}, {0.459, 117.73200}, + {0.460, 117.81200}, {0.461, 117.51700}, {0.462, 117.22200}, {0.463, 116.92700}, + {0.464, 116.63200}, {0.465, 116.33600}, {0.466, 116.04100}, {0.467, 115.74600}, + {0.468, 115.45100}, {0.469, 115.15600}, {0.470, 114.86100}, {0.471, 114.96700}, + {0.472, 115.07300}, {0.473, 115.18000}, {0.474, 115.28600}, {0.475, 115.39200}, + {0.476, 115.49800}, {0.477, 115.60400}, {0.478, 115.71100}, {0.479, 115.81700}, + {0.480, 115.92300}, {0.481, 115.21200}, {0.482, 114.50100}, {0.483, 113.78900}, + {0.484, 113.07800}, {0.485, 112.36700}, {0.486, 111.65600}, {0.487, 110.94500}, + {0.488, 110.23300}, {0.489, 109.52200}, {0.490, 108.81100}, {0.491, 108.86500}, + {0.492, 108.92000}, {0.493, 108.97400}, {0.494, 109.02800}, {0.495, 109.08200}, + {0.496, 109.13700}, {0.497, 109.19100}, {0.498, 109.24500}, {0.499, 109.30000}, + {0.500, 109.35400}, {0.501, 109.19900}, {0.502, 109.04400}, {0.503, 108.88800}, + {0.504, 108.73300}, {0.505, 108.57800}, {0.506, 108.42300}, {0.507, 108.26800}, + {0.508, 108.11200}, {0.509, 107.95700}, {0.510, 107.80200}, {0.511, 107.50100}, + {0.512, 107.20000}, {0.513, 106.89800}, {0.514, 106.59700}, {0.515, 106.29600}, + {0.516, 105.99500}, {0.517, 105.69400}, {0.518, 105.39200}, {0.519, 105.09100}, + {0.520, 104.79000}, {0.521, 105.08000}, {0.522, 105.37000}, {0.523, 105.66000}, + {0.524, 105.95000}, {0.525, 106.23900}, {0.526, 106.52900}, {0.527, 106.81900}, + {0.528, 107.10900}, {0.529, 107.39900}, {0.530, 107.68900}, {0.531, 107.36100}, + {0.532, 107.03200}, {0.533, 106.70400}, {0.534, 106.37500}, {0.535, 106.04700}, + {0.536, 105.71900}, {0.537, 105.39000}, {0.538, 105.06200}, {0.539, 104.73300}, + {0.540, 104.40500}, {0.541, 104.36900}, {0.542, 104.33300}, {0.543, 104.29700}, + {0.544, 104.26100}, {0.545, 104.22500}, {0.546, 104.19000}, {0.547, 104.15400}, + {0.548, 104.11800}, {0.549, 104.08200}, {0.550, 104.04600}, {0.551, 103.64100}, + {0.552, 103.23700}, {0.553, 102.83200}, {0.554, 102.42800}, {0.555, 102.02300}, + {0.556, 101.61800}, {0.557, 101.21400}, {0.558, 100.80900}, {0.559, 100.40500}, + {0.560, 100.00000}, {0.561, 99.633400}, {0.562, 99.266800}, {0.563, 98.900300}, + {0.564, 98.533700}, {0.565, 98.167100}, {0.566, 97.800500}, {0.567, 97.433900}, + {0.568, 97.067400}, {0.569, 96.700800}, {0.570, 96.334200}, {0.571, 96.279600}, + {0.572, 96.225000}, {0.573, 96.170300}, {0.574, 96.115700}, {0.575, 96.061100}, + {0.576, 96.006500}, {0.577, 95.951900}, {0.578, 95.897200}, {0.579, 95.842600}, + {0.580, 95.788000}, {0.581, 95.077800}, {0.582, 94.367500}, {0.583, 93.657300}, + {0.584, 92.947000}, {0.585, 92.236800}, {0.586, 91.526600}, {0.587, 90.816300}, + {0.588, 90.106100}, {0.589, 89.395800}, {0.590, 88.685600}, {0.591, 88.817700}, + {0.592, 88.949700}, {0.593, 89.081800}, {0.594, 89.213800}, {0.595, 89.345900}, + {0.596, 89.478000}, {0.597, 89.610000}, {0.598, 89.742100}, {0.599, 89.874100}, + {0.600, 90.006200}, {0.601, 89.965500}, {0.602, 89.924800}, {0.603, 89.884100}, + {0.604, 89.843400}, {0.605, 89.802600}, {0.606, 89.761900}, {0.607, 89.721200}, + {0.608, 89.680500}, {0.609, 89.639800}, {0.610, 89.599100}, {0.611, 89.409100}, + {0.612, 89.219000}, {0.613, 89.029000}, {0.614, 88.838900}, {0.615, 88.648900}, + {0.616, 88.458900}, {0.617, 88.268800}, {0.618, 88.078800}, {0.619, 87.888700}, + {0.620, 87.698700}, {0.621, 87.257700}, {0.622, 86.816700}, {0.623, 86.375700}, + {0.624, 85.934700}, {0.625, 85.493600}, {0.626, 85.052600}, {0.627, 84.611600}, + {0.628, 84.170600}, {0.629, 83.729600}, {0.630, 83.288600}, {0.631, 83.329700}, + {0.632, 83.370700}, {0.633, 83.411800}, {0.634, 83.452800}, {0.635, 83.493900}, + {0.636, 83.535000}, {0.637, 83.576000}, {0.638, 83.617100}, {0.639, 83.658100}, + {0.640, 83.699200}, {0.641, 83.332000}, {0.642, 82.964700}, {0.643, 82.597500}, + {0.644, 82.230200}, {0.645, 81.863000}, {0.646, 81.495800}, {0.647, 81.128500}, + {0.648, 80.761300}, {0.649, 80.394000}, {0.650, 80.026800}, {0.651, 80.045600}, + {0.652, 80.064400}, {0.653, 80.083100}, {0.654, 80.101900}, {0.655, 80.120700}, + {0.656, 80.139500}, {0.657, 80.158300}, {0.658, 80.177000}, {0.659, 80.195800}, + {0.660, 80.214600}, {0.661, 80.420900}, {0.662, 80.627200}, {0.663, 80.833600}, + {0.664, 81.039900}, {0.665, 81.246200}, {0.666, 81.452500}, {0.667, 81.658800}, + {0.668, 81.865200}, {0.669, 82.071500}, {0.670, 82.277800}, {0.671, 81.878400}, + {0.672, 81.479100}, {0.673, 81.079700}, {0.674, 80.680400}, {0.675, 80.281000}, + {0.676, 79.881600}, {0.677, 79.482300}, {0.678, 79.082900}, {0.679, 78.683600}, + {0.680, 78.284200}, {0.681, 77.427900}, {0.682, 76.571600}, {0.683, 75.715300}, + {0.684, 74.859000}, {0.685, 74.002700}, {0.686, 73.146500}, {0.687, 72.290200}, + {0.688, 71.433900}, {0.689, 70.577600}, {0.690, 69.721300}, {0.691, 69.910100}, + {0.692, 70.098900}, {0.693, 70.287600}, {0.694, 70.476400}, {0.695, 70.665200}, + {0.696, 70.854000}, {0.697, 71.042800}, {0.698, 71.231500}, {0.699, 71.420300}, + {0.700, 71.609100}, {0.701, 71.883100}, {0.702, 72.157100}, {0.703, 72.431100}, + {0.704, 72.705100}, {0.705, 72.979000}, {0.706, 73.253000}, {0.707, 73.527000}, + {0.708, 73.801000}, {0.709, 74.075000}, {0.710, 74.349000}, {0.711, 73.074500}, + {0.712, 71.800000}, {0.713, 70.525500}, {0.714, 69.251000}, {0.715, 67.976500}, + {0.716, 66.702000}, {0.717, 65.427500}, {0.718, 64.153000}, {0.719, 62.878500}, + {0.720, 61.604000}, {0.721, 62.432200}, {0.722, 63.260300}, {0.723, 64.088500}, + {0.724, 64.916600}, {0.725, 65.744800}, {0.726, 66.573000}, {0.727, 67.401100}, + {0.728, 68.229300}, {0.729, 69.057400}, {0.730, 69.885600}, {0.731, 70.405700}, + {0.732, 70.925900}, {0.733, 71.446000}, {0.734, 71.966200}, {0.735, 72.486300}, + {0.736, 73.006400}, {0.737, 73.526600}, {0.738, 74.046700}, {0.739, 74.566900}, + {0.740, 75.087000}, {0.741, 73.937600}, {0.742, 72.788100}, {0.743, 71.638700}, + {0.744, 70.489300}, {0.745, 69.339800}, {0.746, 68.190400}, {0.747, 67.041000}, + {0.748, 65.891600}, {0.749, 64.742100}, {0.750, 63.592700}, {0.751, 61.875200}, + {0.752, 60.157800}, {0.753, 58.440300}, {0.754, 56.722900}, {0.755, 55.005400}, + {0.756, 53.288000}, {0.757, 51.570500}, {0.758, 49.853100}, {0.759, 48.135600}, + {0.760, 46.418200}, {0.761, 48.456900}, {0.762, 50.495600}, {0.763, 52.534400}, + {0.764, 54.573100}, {0.765, 56.611800}, {0.766, 58.650500}, {0.767, 60.689200}, + {0.768, 62.728000}, {0.769, 64.766700}, {0.770, 66.805400}, {0.771, 66.463100}, + {0.772, 66.120900}, {0.773, 65.778600}, {0.774, 65.436400}, {0.775, 65.094100}, + {0.776, 64.751800}, {0.777, 64.409600}, {0.778, 64.067300}, {0.779, 63.725100}, + {0.780, 63.382800}, {0.781, 63.474900}, {0.782, 63.567000}, {0.783, 63.659200}, + {0.784, 63.751300}, {0.785, 63.843400}, {0.786, 63.935500}, {0.787, 64.027600}, + {0.788, 64.119800}, {0.789, 64.211900}, {0.790, 64.304000}, {0.791, 63.818800}, + {0.792, 63.333600}, {0.793, 62.848400}, {0.794, 62.363200}, {0.795, 61.877900}, + {0.796, 61.392700}, {0.797, 60.907500}, {0.798, 60.422300}, {0.799, 59.937100}, + {0.800, 59.451900}, {0.801, 58.702600}, {0.802, 57.953300}, {0.803, 57.204000}, + {0.804, 56.454700}, {0.805, 55.705400}, {0.806, 54.956200}, {0.807, 54.206900}, + {0.808, 53.457600}, {0.809, 52.708300}, {0.810, 51.959000}, {0.811, 52.507200}, + {0.812, 53.055300}, {0.813, 53.603500}, {0.814, 54.151600}, {0.815, 54.699800}, + {0.816, 55.248000}, {0.817, 55.796100}, {0.818, 56.344300}, {0.819, 56.892400}, + {0.820, 57.440600}, {0.821, 57.727800}, {0.822, 58.015000}, {0.823, 58.302200}, + {0.824, 58.589400}, {0.825, 58.876500}, {0.826, 59.163700}, {0.827, 59.450900}, + {0.828, 59.738100}, {0.829, 60.025300}, {0.830, 60.312500}}); + + return solarRadiation; + } + + [[nodiscard]] static std::shared_ptr + loadSampleData_NFRC_5439() + { + return SpectralAveraging::CSpectralSampleData::create( + {{0.300, 0.0019, 0.0491, 0.2686}, {0.305, 0.0037, 0.0885, 0.2723}, + {0.310, 0.0062, 0.1118, 0.2856}, {0.315, 0.0114, 0.1363, 0.3101}, + {0.320, 0.0209, 0.1595, 0.3418}, {0.325, 0.0289, 0.1802, 0.3774}, + {0.330, 0.0404, 0.1970, 0.4123}, {0.335, 0.0605, 0.2098, 0.4415}, + {0.340, 0.0653, 0.2192, 0.4636}, {0.345, 0.0590, 0.2253, 0.4796}, + {0.350, 0.0559, 0.2295, 0.4911}, {0.355, 0.0583, 0.2325, 0.4986}, + {0.360, 0.0657, 0.2341, 0.5029}, {0.365, 0.0780, 0.2351, 0.5018}, + {0.370, 0.0959, 0.2374, 0.4958}, {0.375, 0.1206, 0.2435, 0.4837}, + {0.380, 0.1534, 0.2485, 0.4627}, {0.385, 0.1954, 0.2512, 0.4324}, + {0.390, 0.2466, 0.2485, 0.3929}, {0.395, 0.3066, 0.2391, 0.3465}, + {0.400, 0.3718, 0.2233, 0.2960}, {0.410, 0.5010, 0.1781, 0.1981}, + {0.420, 0.5990, 0.1340, 0.1288}, {0.430, 0.6539, 0.1040, 0.0927}, + {0.440, 0.6761, 0.0893, 0.0782}, {0.450, 0.6823, 0.0841, 0.0732}, + {0.460, 0.6858, 0.0833, 0.0710}, {0.470, 0.6893, 0.0840, 0.0694}, + {0.480, 0.6948, 0.0850, 0.0677}, {0.490, 0.7028, 0.0858, 0.0663}, + {0.500, 0.7102, 0.0859, 0.0652}, {0.510, 0.7179, 0.0856, 0.0648}, + {0.520, 0.7232, 0.0850, 0.0647}, {0.530, 0.7272, 0.0840, 0.0648}, + {0.540, 0.7296, 0.0829, 0.0650}, {0.550, 0.7311, 0.0811, 0.0642}, + {0.560, 0.7315, 0.0785, 0.0624}, {0.570, 0.7315, 0.0744, 0.0588}, + {0.580, 0.7293, 0.0686, 0.0529}, {0.590, 0.7270, 0.0618, 0.0456}, + {0.600, 0.7224, 0.0545, 0.0377}, {0.610, 0.7155, 0.0483, 0.0308}, + {0.620, 0.7025, 0.0456, 0.0280}, {0.630, 0.6810, 0.0492, 0.0324}, + {0.640, 0.6507, 0.0629, 0.0487}, {0.650, 0.6096, 0.0886, 0.0787}, + {0.660, 0.5585, 0.1279, 0.1245}, {0.670, 0.5003, 0.1795, 0.1843}, + {0.680, 0.4374, 0.2398, 0.2544}, {0.690, 0.3754, 0.3047, 0.3291}, + {0.700, 0.3171, 0.3709, 0.4036}, {0.710, 0.2651, 0.4348, 0.4750}, + {0.720, 0.2194, 0.4917, 0.5401}, {0.730, 0.1807, 0.5413, 0.5955}, + {0.740, 0.1494, 0.5855, 0.6448}, {0.750, 0.1233, 0.6244, 0.6877}, + {0.760, 0.1025, 0.6563, 0.7243}, {0.770, 0.0852, 0.6826, 0.7536}, + {0.780, 0.0716, 0.7092, 0.7786}, {0.790, 0.0602, 0.7228, 0.8010}, + {0.800, 0.0509, 0.7419, 0.8199}, {0.810, 0.0436, 0.7579, 0.8362}, + {0.820, 0.0373, 0.7693, 0.8507}, {0.830, 0.0320, 0.7820, 0.8617}, + {0.840, 0.0280, 0.7918, 0.8711}, {0.850, 0.0234, 0.7952, 0.8792}, + {0.860, 0.0206, 0.8083, 0.8928}, {0.870, 0.0184, 0.8075, 0.8935}, + {0.880, 0.0161, 0.8138, 0.9007}, {0.890, 0.0151, 0.8183, 0.9063}, + {0.900, 0.0131, 0.8220, 0.9101}, {0.910, 0.0117, 0.8248, 0.9148}, + {0.920, 0.0108, 0.8258, 0.9189}, {0.930, 0.0099, 0.8283, 0.9225}, + {0.940, 0.0089, 0.8305, 0.9256}, {0.950, 0.0080, 0.8321, 0.9283}, + {0.960, 0.0075, 0.8337, 0.9310}, {0.970, 0.0067, 0.8355, 0.9338}, + {0.980, 0.0061, 0.8373, 0.9360}, {0.990, 0.0058, 0.8391, 0.9380}, + {1.000, 0.0053, 0.8410, 0.9400}, {1.050, 0.0036, 0.8478, 0.9475}, + {1.100, 0.0014, 0.8533, 0.9534}, {1.150, 0.0010, 0.8604, 0.9575}, + {1.200, 0.0005, 0.8639, 0.9608}, {1.250, 0.0003, 0.8699, 0.9634}, + {1.300, 0.0002, 0.8740, 0.9655}, {1.350, 0.0000, 0.8747, 0.9672}, + {1.400, 0.0005, 0.8759, 0.9682}, {1.450, 0.0004, 0.8835, 0.9692}, + {1.500, 0.0003, 0.8897, 0.9702}, {1.550, 0.0003, 0.8951, 0.9713}, + {1.600, 0.0003, 0.8984, 0.9719}, {1.650, 0.0003, 0.8999, 0.9727}, + {1.700, 0.0006, 0.9005, 0.9734}, {1.750, 0.0007, 0.8974, 0.9739}, + {1.800, 0.0005, 0.8887, 0.9745}, {1.850, 0.0005, 0.8806, 0.9751}, + {1.900, 0.0004, 0.8788, 0.9754}, {1.950, 0.0004, 0.8757, 0.9756}, + {2.000, 0.0005, 0.8688, 0.9759}, {2.050, 0.0005, 0.8626, 0.9764}, + {2.100, 0.0005, 0.8565, 0.9766}, {2.150, 0.0003, 0.8407, 0.9767}, + {2.200, 0.0008, 0.7981, 0.9768}, {2.250, 0.0001, 0.7954, 0.9771}, + {2.300, 0.0008, 0.7861, 0.9763}, {2.350, 0.0010, 0.7911, 0.9768}, + {2.400, 0.0004, 0.7827, 0.9781}, {2.450, 0.0013, 0.7314, 0.9773}, + {2.500, 0.0009, 0.7243, 0.9779}, {5.000, 0.0000, 0.0346, 0.9854}, + {6.000, 0.0000, 0.0278, 0.9847}, {7.000, 0.0000, 0.0168, 0.9850}, + {8.000, 0.0000, 0.0011, 0.9857}, {9.000, 0.0000, 0.1913, 0.9868}, + {10.000, 0.0000, 0.2714, 0.9845}, {11.000, 0.0000, 0.1950, 0.9841}, + {12.000, 0.0000, 0.0881, 0.9846}, {13.000, 0.0000, 0.0775, 0.9848}, + {14.000, 0.0000, 0.0715, 0.9850}, {15.000, 0.0000, 0.0603, 0.9852}, + {16.000, 0.0000, 0.0495, 0.9855}, {17.000, 0.0000, 0.0392, 0.9863}, + {18.000, 0.0000, 0.0260, 0.9874}, {19.000, 0.0000, 0.0537, 0.9883}, + {20.000, 0.0000, 0.1614, 0.9885}, {21.000, 0.0000, 0.2107, 0.9872}, + {22.000, 0.0000, 0.2206, 0.9873}, {23.000, 0.0000, 0.2047, 0.9868}, + {24.000, 0.0000, 0.1862, 0.9864}, {25.000, 0.0000, 0.1683, 0.9870}, + {26.000, 0.0000, 0.1562, 0.9873}, {27.000, 0.0000, 0.1475, 0.9868}, + {28.000, 0.0000, 0.1405, 0.9880}, {29.000, 0.0000, 0.1357, 0.9858}, + {30.000, 0.0000, 0.1315, 0.9864}, {31.000, 0.0000, 0.1283, 0.9890}, + {32.000, 0.0000, 0.1278, 0.9870}, {33.000, 0.0000, 0.1284, 0.9872}, + {34.000, 0.0000, 0.1276, 0.9871}, {35.000, 0.0000, 0.1280, 0.9905}, + {36.000, 0.0000, 0.1304, 0.9899}, {37.000, 0.0000, 0.1331, 0.9901}, + {38.000, 0.0000, 0.1336, 0.9882}, {39.000, 0.0000, 0.1355, 0.9917}, + {40.000, 0.0000, 0.1381, 0.9915}}); + } + + static CSeries ASTM_E308_1964_X() + { + return CSeries( + {{0.380, 0.0002}, {0.385, 0.0007}, {0.390, 0.0024}, {0.395, 0.0072}, {0.400, 0.0191}, + {0.405, 0.0434}, {0.410, 0.0847}, {0.415, 0.1406}, {0.420, 0.2045}, {0.425, 0.2647}, + {0.430, 0.3147}, {0.435, 0.3577}, {0.440, 0.3837}, {0.445, 0.3867}, {0.450, 0.3707}, + {0.455, 0.3430}, {0.460, 0.3023}, {0.465, 0.2541}, {0.470, 0.1956}, {0.475, 0.1323}, + {0.480, 0.0805}, {0.485, 0.0411}, {0.490, 0.0162}, {0.495, 0.0051}, {0.500, 0.0038}, + {0.505, 0.0154}, {0.510, 0.0375}, {0.515, 0.0714}, {0.520, 0.1177}, {0.525, 0.1730}, + {0.530, 0.2365}, {0.535, 0.3042}, {0.540, 0.3768}, {0.545, 0.4516}, {0.550, 0.5298}, + {0.555, 0.6161}, {0.560, 0.7052}, {0.565, 0.7938}, {0.570, 0.8787}, {0.575, 0.9512}, + {0.580, 1.0142}, {0.585, 1.0743}, {0.590, 1.1185}, {0.595, 1.1343}, {0.600, 1.1240}, + {0.605, 1.0891}, {0.610, 1.0305}, {0.615, 0.9507}, {0.620, 0.8563}, {0.625, 0.7549}, + {0.630, 0.6475}, {0.635, 0.5351}, {0.640, 0.4316}, {0.645, 0.3437}, {0.650, 0.2683}, + {0.655, 0.2043}, {0.660, 0.1526}, {0.665, 0.1122}, {0.670, 0.0813}, {0.675, 0.0529}, + {0.680, 0.0409}, {0.685, 0.0286}, {0.690, 0.0199}, {0.695, 0.0138}, {0.700, 0.0096}, + {0.705, 0.0066}, {0.710, 0.0046}, {0.715, 0.0031}, {0.720, 0.0022}, {0.725, 0.0015}, + {0.730, 0.0010}, {0.735, 0.0007}, {0.740, 0.0005}, {0.745, 0.0004}, {0.750, 0.0003}, + {0.755, 0.0002}, {0.760, 0.0001}, {0.765, 0.0001}, {0.770, 0.0001}, {0.775, 0.0000}, + {0.780, 0.0000}}); + } + + static CSeries ASTM_E308_1964_Y() + { + return CSeries( + {{0.380, 0.0000}, {0.385, 0.0001}, {0.390, 0.0003}, {0.395, 0.0008}, {0.400, 0.0020}, + {0.405, 0.0045}, {0.410, 0.0088}, {0.415, 0.0145}, {0.420, 0.0214}, {0.425, 0.0295}, + {0.430, 0.0387}, {0.435, 0.0496}, {0.440, 0.0621}, {0.445, 0.0747}, {0.450, 0.0895}, + {0.455, 0.1063}, {0.460, 0.1282}, {0.465, 0.1528}, {0.470, 0.1852}, {0.475, 0.2199}, + {0.480, 0.2536}, {0.485, 0.2977}, {0.490, 0.3391}, {0.495, 0.3954}, {0.500, 0.4608}, + {0.505, 0.5314}, {0.510, 0.6067}, {0.515, 0.6857}, {0.520, 0.7618}, {0.525, 0.8233}, + {0.530, 0.8752}, {0.535, 0.9238}, {0.540, 0.9620}, {0.545, 0.9822}, {0.550, 0.9918}, + {0.555, 0.9991}, {0.560, 0.9973}, {0.565, 0.9824}, {0.570, 0.9555}, {0.575, 0.9152}, + {0.580, 0.8689}, {0.585, 0.8256}, {0.590, 0.7774}, {0.595, 0.7204}, {0.600, 0.6583}, + {0.605, 0.5939}, {0.610, 0.5280}, {0.615, 0.4618}, {0.620, 0.3981}, {0.625, 0.3396}, + {0.630, 0.2835}, {0.635, 0.2283}, {0.640, 0.1798}, {0.645, 0.1402}, {0.650, 0.1076}, + {0.655, 0.0812}, {0.660, 0.0603}, {0.665, 0.0441}, {0.670, 0.0318}, {0.675, 0.0226}, + {0.680, 0.0159}, {0.685, 0.0111}, {0.690, 0.0077}, {0.695, 0.0054}, {0.700, 0.0037}, + {0.705, 0.0026}, {0.710, 0.0018}, {0.715, 0.0012}, {0.720, 0.0008}, {0.725, 0.0006}, + {0.730, 0.0004}, {0.735, 0.0003}, {0.740, 0.0002}, {0.745, 0.0001}, {0.750, 0.0001}, + {0.755, 0.0001}, {0.760, 0.0000}, {0.765, 0.0000}, {0.770, 0.0000}, {0.775, 0.0000}, + {0.780, 0.0000}}); + } + + static CSeries ASTM_E308_1964_Z() + { + return CSeries( + {{0.380, 0.0007}, {0.385, 0.0029}, {0.390, 0.0105}, {0.395, 0.0323}, {0.400, 0.0860}, + {0.405, 0.1971}, {0.410, 0.3894}, {0.415, 0.6568}, {0.420, 0.9725}, {0.425, 1.2825}, + {0.430, 1.5535}, {0.435, 1.7985}, {0.440, 1.9673}, {0.445, 2.0273}, {0.450, 1.9948}, + {0.455, 1.9007}, {0.460, 1.7454}, {0.465, 1.5549}, {0.470, 1.3176}, {0.475, 1.0302}, + {0.480, 0.7721}, {0.485, 0.5701}, {0.490, 0.4153}, {0.495, 0.3024}, {0.500, 0.2185}, + {0.505, 0.1592}, {0.510, 0.1120}, {0.515, 0.0822}, {0.520, 0.0607}, {0.525, 0.0431}, + {0.530, 0.0305}, {0.535, 0.0206}, {0.540, 0.0137}, {0.545, 0.0079}, {0.550, 0.0040}, + {0.555, 0.0011}, {0.560, 0.0000}, {0.565, 0.0000}, {0.570, 0.0000}, {0.575, 0.0000}, + {0.580, 0.0000}, {0.585, 0.0000}, {0.590, 0.0000}, {0.595, 0.0000}, {0.600, 0.0000}, + {0.605, 0.0000}, {0.610, 0.0000}, {0.615, 0.0000}, {0.620, 0.0000}, {0.625, 0.0000}, + {0.630, 0.0000}, {0.635, 0.0000}, {0.640, 0.0000}, {0.645, 0.0000}, {0.650, 0.0000}, + {0.655, 0.0000}, {0.660, 0.0000}, {0.665, 0.0000}, {0.670, 0.0000}, {0.675, 0.0000}, + {0.680, 0.0000}, {0.685, 0.0000}, {0.690, 0.0000}, {0.695, 0.0000}, {0.700, 0.0000}, + {0.705, 0.0000}, {0.710, 0.0000}, {0.715, 0.0000}, {0.720, 0.0000}, {0.725, 0.0000}, + {0.730, 0.0000}, {0.735, 0.0000}, {0.740, 0.0000}, {0.745, 0.0000}, {0.750, 0.0000}, + {0.755, 0.0000}, {0.760, 0.0000}, {0.765, 0.0000}, {0.770, 0.0000}, {0.775, 0.0000}, + {0.780, 0.0000}}); + } + + [[nodiscard]] std::unique_ptr + createLayer(const CSeries & astmStandard) const + { + double thickness = 3.048e-3; // [m] + const auto aMaterial = + SingleLayerOptics::Material::nBandMaterial(loadSampleData_NFRC_5439(), + astmStandard, + thickness, + FenestrationCommon::MaterialType::Monolithic, + FenestrationCommon::WavelengthRange::Visible); + + auto single_layer = SingleLayerOptics::SpecularLayer::createLayer(aMaterial); + + CSeries solarRadiation{loadSolarRadiationFile()}; + single_layer->setSourceData(solarRadiation); + + auto layer = MultiLayerOptics::CMultiPaneSpecular::create({single_layer}); + + const MultiLayerOptics::CalculationProperties input{ + loadSolarRadiationFile(), loadWavelengths(), astmStandard}; + layer->setCalculationProperties(input); + + return layer; + } + +protected: + void SetUp() override + { + auto LayerX = createLayer(ASTM_E308_1964_X()); + auto LayerY = createLayer(ASTM_E308_1964_Y()); + auto LayerZ = createLayer(ASTM_E308_1964_Z()); + + CSeries DX = ASTM_E308_1964_X(); + CSeries DY = ASTM_E308_1964_Y(); + CSeries DZ = ASTM_E308_1964_Z(); + + CSeries solarRadiation{loadSolarRadiationFile()}; + + const std::vector condensed{0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + + m_Color = std::make_shared(std::move(LayerX), + std::move(LayerY), + std::move(LayerZ), + solarRadiation, + DX, + DY, + DZ, + condensed); + } + +public: + [[nodiscard]] std::shared_ptr getLayer() const + { + return m_Color; + } +}; + +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestTrichromatic_T) +{ + SCOPED_TRACE("Begin Test: Trichromatic."); + + std::shared_ptr aLayer = getLayer(); + + FenestrationCommon::Side aSide = FenestrationCommon::Side::Front; + + SingleLayerOptics::Trichromatic T = aLayer->getTrichromatic( + FenestrationCommon::PropertySimple::T, aSide, FenestrationCommon::Scattering::DirectDirect); + EXPECT_NEAR(70.05348398455908, T.X, 1e-6); + EXPECT_NEAR(71.662456839737615, T.Y, 1e-6); + EXPECT_NEAR(91.883779247722487, T.Z, 1e-6); +} + +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestTrichromatic_R) +{ + SCOPED_TRACE("Begin Test: Trichromatic."); + + std::shared_ptr aLayer = getLayer(); + + FenestrationCommon::Side aSide = FenestrationCommon::Side::Front; + + SingleLayerOptics::Trichromatic T = aLayer->getTrichromatic( + FenestrationCommon::PropertySimple::R, aSide, FenestrationCommon::Scattering::DirectDirect); + EXPECT_NEAR(7.3558417434189272, T.X, 1e-6); + EXPECT_NEAR(7.635557, T.Y, 1e-6); + EXPECT_NEAR(13.006581034996834, T.Z, 1e-6); +} + +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestRGB_T) +{ + SCOPED_TRACE("Begin Test: RGB."); + + std::shared_ptr aLayer = getLayer(); + + FenestrationCommon::Side aSide = FenestrationCommon::Side::Front; + + auto rgb = aLayer->getRGB( + FenestrationCommon::PropertySimple::T, aSide, FenestrationCommon::Scattering::DirectDirect); + EXPECT_EQ(242, rgb.R); + EXPECT_EQ(241, rgb.G); + EXPECT_EQ(255, rgb.B); +} + +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestRGB_R) +{ + SCOPED_TRACE("Begin Test: RGB."); + + std::shared_ptr aLayer = getLayer(); + + FenestrationCommon::Side aSide = FenestrationCommon::Side::Front; + + auto rgb = aLayer->getRGB( + FenestrationCommon::PropertySimple::R, aSide, FenestrationCommon::Scattering::DirectDirect); + EXPECT_EQ(74, rgb.R); + EXPECT_EQ(87, rgb.G); + EXPECT_EQ(110, rgb.B); +} + +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestCIE_LAB_T) +{ + SCOPED_TRACE("Begin Test: CIE_LAB."); + + std::shared_ptr aLayer = getLayer(); + + FenestrationCommon::Side aSide = FenestrationCommon::Side::Front; + + auto cie = aLayer->getCIE_Lab( + FenestrationCommon::PropertySimple::T, aSide, FenestrationCommon::Scattering::DirectDirect); + EXPECT_NEAR(87.805864, cie.L, 1e-6); + EXPECT_NEAR(-3.402796, cie.a, 1e-6); + EXPECT_NEAR(4.081155, cie.b, 1e-6); +} + +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestCIE_LAB_R) +{ + SCOPED_TRACE("Begin Test: CIE_LAB."); + + std::shared_ptr aLayer = getLayer(); + + FenestrationCommon::Side aSide = FenestrationCommon::Side::Front; + + auto cie = aLayer->getCIE_Lab( + FenestrationCommon::PropertySimple::R, aSide, FenestrationCommon::Scattering::DirectDirect); + EXPECT_NEAR(33.212062, cie.L, 1e-6); + EXPECT_NEAR(-2.636088, cie.a, 1e-6); + EXPECT_NEAR(-6.300395, cie.b, 1e-6); +} diff --git a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum.unit.cpp similarity index 95% rename from src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular.unit.cpp rename to src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum.unit.cpp index 885182c1..209efdc4 100644 --- a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum.unit.cpp @@ -6,12 +6,12 @@ using FenestrationCommon::CSeries; -class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test +class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum : public testing::Test { private: std::shared_ptr m_Color; - std::vector loadWavelengths() const + static std::vector loadWavelengths() { std::vector aWavelengths{ 0.380, 0.385, 0.390, 0.395, 0.400, 0.405, 0.410, 0.415, 0.420, 0.425, 0.430, 0.435, @@ -25,7 +25,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test return aWavelengths; } - CSeries loadSolarRadiationFile() const + static CSeries loadSolarRadiationFile() { // Full CIE Illuminant D651 nm ssp table (used for PHOTOPIC properties) CSeries solarRadiation( @@ -166,7 +166,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test return solarRadiation; } - std::shared_ptr loadSampleData_NFRC_5439() const + [[nodiscard]] static std::shared_ptr loadSampleData_NFRC_5439() { return SpectralAveraging::CSpectralSampleData::create( {{0.300, 0.0019, 0.0491, 0.2686}, {0.305, 0.0037, 0.0885, 0.2723}, @@ -245,7 +245,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test {40.000, 0.0000, 0.1381, 0.9915}}); } - CSeries ASTM_E308_1964_X() const + static CSeries ASTM_E308_1964_X() { return CSeries( {{0.380, 0.0002}, {0.385, 0.0007}, {0.390, 0.0024}, {0.395, 0.0072}, {0.400, 0.0191}, @@ -267,7 +267,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test {0.780, 0.0000}}); } - CSeries ASTM_E308_1964_Y() const + static CSeries ASTM_E308_1964_Y() { return CSeries( {{0.380, 0.0000}, {0.385, 0.0001}, {0.390, 0.0003}, {0.395, 0.0008}, {0.400, 0.0020}, @@ -289,7 +289,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test {0.780, 0.0000}}); } - CSeries ASTM_E308_1964_Z() const + static CSeries ASTM_E308_1964_Z() { return CSeries( {{0.380, 0.0007}, {0.385, 0.0029}, {0.390, 0.0105}, {0.395, 0.0323}, {0.400, 0.0860}, @@ -311,7 +311,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test {0.780, 0.0000}}); } - std::unique_ptr + [[nodiscard]] std::unique_ptr createLayer(const CSeries & astmStandard) const { double thickness = 3.048e-3; // [m] @@ -322,8 +322,6 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test FenestrationCommon::MaterialType::Monolithic, FenestrationCommon::WavelengthRange::Visible); - aMaterial->setBandWavelengths(loadWavelengths()); - auto single_layer = SingleLayerOptics::SpecularLayer::createLayer(aMaterial); CSeries solarRadiation{loadSolarRadiationFile()}; @@ -351,10 +349,10 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test CSeries solarRadiation{loadSolarRadiationFile()}; - auto wl = loadWavelengths(); + //auto wl = loadWavelengths(); m_Color = std::make_shared( - std::move(LayerX), std::move(LayerY), std::move(LayerZ), solarRadiation, DX, DY, DZ, wl); + std::move(LayerX), std::move(LayerY), std::move(LayerZ), solarRadiation, DX, DY, DZ); } public: @@ -364,7 +362,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular : public testing::Test } }; -TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestTrichromatic_T) +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestTrichromatic_T) { SCOPED_TRACE("Begin Test: Trichromatic."); @@ -374,12 +372,12 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestTrichromatic_T) SingleLayerOptics::Trichromatic T = aLayer->getTrichromatic( FenestrationCommon::PropertySimple::T, aSide, FenestrationCommon::Scattering::DirectDirect); - EXPECT_NEAR(66.393144, T.X, 1e-6); + EXPECT_NEAR(66.445296720302537, T.X, 1e-6); EXPECT_NEAR(71.662457, T.Y, 1e-6); - EXPECT_NEAR(71.768345, T.Z, 1e-6); + EXPECT_NEAR(71.940385010574701, T.Z, 1e-6); } -TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestTrichromatic_R) +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestTrichromatic_R) { SCOPED_TRACE("Begin Test: Trichromatic."); @@ -389,12 +387,12 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestTrichromatic_R) SingleLayerOptics::Trichromatic T = aLayer->getTrichromatic( FenestrationCommon::PropertySimple::R, aSide, FenestrationCommon::Scattering::DirectDirect); - EXPECT_NEAR(6.971494, T.X, 1e-6); + EXPECT_NEAR(6.976970444136497, T.X, 1e-6); EXPECT_NEAR(7.635557, T.Y, 1e-6); - EXPECT_NEAR(10.159147, T.Z, 1e-6); + EXPECT_NEAR(10.183499797132086, T.Z, 1e-6); } -TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestRGB_T) +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestRGB_T) { SCOPED_TRACE("Begin Test: RGB."); @@ -409,7 +407,7 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestRGB_T) EXPECT_EQ(233, rgb.B); } -TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestRGB_R) +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestRGB_R) { SCOPED_TRACE("Begin Test: RGB."); @@ -424,7 +422,7 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestRGB_R) EXPECT_EQ(96, rgb.B); } -TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestCIE_LAB_T) +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestCIE_LAB_T) { SCOPED_TRACE("Begin Test: CIE_LAB."); @@ -439,7 +437,7 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestCIE_LAB_T) EXPECT_NEAR(4.081155, cie.b, 1e-6); } -TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular, TestCIE_LAB_R) +TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestCIE_LAB_R) { SCOPED_TRACE("Begin Test: CIE_LAB."); From 8147f62c747c5f8b69a203d354fcbc1e813443fc Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 4 Aug 2022 11:20:11 -0700 Subject: [PATCH 45/81] Update to macos yml version. --- .github/workflows/mac_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mac_release.yml b/.github/workflows/mac_release.yml index 86684152..d916bf4b 100644 --- a/.github/workflows/mac_release.yml +++ b/.github/workflows/mac_release.yml @@ -1,4 +1,4 @@ -name: MacOS 12.5 +name: MacOS 11.0 on: [push, pull_request] From c7acef314d674ad550c925097c7832b55ee390bc Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 4 Aug 2022 11:23:03 -0700 Subject: [PATCH 46/81] MacOS 11.0 --- .github/workflows/mac_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mac_release.yml b/.github/workflows/mac_release.yml index d916bf4b..286e1069 100644 --- a/.github/workflows/mac_release.yml +++ b/.github/workflows/mac_release.yml @@ -12,7 +12,7 @@ jobs: # well on Windows or Mac. You can convert this to a matrix build if you need # cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - runs-on: macos-12.5 + runs-on: macos-11.0 steps: - uses: actions/checkout@v2 From f228d54a989b3e7b0ddb7cb9be8800f680492447 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 4 Aug 2022 12:03:12 -0700 Subject: [PATCH 47/81] Fix for n-band material in venetian when scaled down to condensed spectrum. --- ...ctional_n_Band_Material_Condensed.unit.cpp | 389 ++++++++++++++++++ ...VenetianUniform_CondensedSpectrum.unit.cpp | 253 ++++++++++++ ...102_VenetianUniform_FullSpectrum.unit.cpp} | 0 src/SingleLayerOptics/src/BaseCell.cpp | 2 +- src/SingleLayerOptics/src/BaseCell.hpp | 2 +- src/SingleLayerOptics/src/VenetianCell.cpp | 6 + src/SingleLayerOptics/src/VenetianCell.hpp | 2 + 7 files changed, 652 insertions(+), 2 deletions(-) create mode 100644 src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp create mode 100644 src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum.unit.cpp rename src/MultiLayerOptics/tst/units/{MultiPaneBSDF_102_VenetianUniform.unit.cpp => MultiPaneBSDF_102_VenetianUniform_FullSpectrum.unit.cpp} (100%) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp new file mode 100644 index 00000000..3bf990ea --- /dev/null +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp @@ -0,0 +1,389 @@ +#include +#include + +#include "WCESpectralAveraging.hpp" +#include "WCEMultiLayerOptics.hpp" +#include "WCESingleLayerOptics.hpp" +#include "WCECommon.hpp" + + +using namespace SingleLayerOptics; +using namespace FenestrationCommon; +using namespace SpectralAveraging; +using namespace MultiLayerOptics; + +// Example on how to create multilayer BSDF from specular and venetian layers + +class MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed : public testing::Test +{ +private: + std::unique_ptr m_Layer; + + CSeries loadSolarRadiationFile() + { + // Full ASTM E891-87 Table 1 (Solar radiation) + CSeries aSolarRadiation( + {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, + {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, + {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, + {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, + {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, + {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, + {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, + {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, + {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, + {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, + {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, + {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, + {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, + {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, + {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, + {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, + {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, + {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, + {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, + {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, + {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, + {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, + {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, + {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, + {4.0450, 6.9} + + }); + + return aSolarRadiation; + } + + std::shared_ptr loadSampleData_NFRC_102() + { + auto aMeasurements_102 = CSpectralSampleData::create( + {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, + {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, + {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, + {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, + {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, + {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, + {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, + {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, + {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, + {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, + {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, + {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, + {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, + {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, + {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, + {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, + {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, + {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, + {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, + {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, + {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, + {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, + {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, + {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, + {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, + {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, + {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, + {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, + {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, + {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, + {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, + {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, + {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, + {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, + {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, + {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, + {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, + {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, + {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, + {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, + {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, + {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, + {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, + {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, + {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, + {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, + {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, + {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, + {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, + {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, + {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, + {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, + {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, + {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, + {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, + {2.500, 0.8220, 0.0680, 0.0680}}); + + return aMeasurements_102; + } + + std::shared_ptr loadSampleData_NFRC_31100() + { + auto aMeasurements_31100 = CSpectralSampleData::create( + {{0.3, 0.0, 0.0703, 0.0703}, {0.305, 0.0, 0.07, 0.07}, {0.31, 0.0, 0.0692, 0.0692}, + {0.315, 0.0, 0.0684, 0.0684}, {0.32, 0.0, 0.0674, 0.0674}, {0.325, 0.0, 0.0663, 0.0663}, + {0.33, 0.0, 0.0653, 0.0653}, {0.335, 0.0, 0.0647, 0.0647}, {0.34, 0.0, 0.0642, 0.0642}, + {0.345, 0.0, 0.0651, 0.0651}, {0.35, 0.0, 0.067, 0.067}, {0.355, 0.0, 0.0704, 0.0704}, + {0.36, 0.0, 0.0751, 0.0751}, {0.365, 0.0, 0.0816, 0.0816}, {0.37, 0.0, 0.09, 0.09}, + {0.375, 0.0, 0.1022, 0.1022}, {0.38, 0.0, 0.1191, 0.1191}, {0.385, 0.0, 0.1455, 0.1455}, + {0.39, 0.0, 0.1897, 0.1897}, {0.395, 0.0, 0.2618, 0.2618}, {0.4, 0.0, 0.3615, 0.3615}, + {0.405, 0.0, 0.4777, 0.4777}, {0.41, 0.0, 0.5803, 0.5803}, {0.415, 0.0, 0.6437, 0.6437}, + {0.42, 0.0, 0.6726, 0.6726}, {0.425, 0.0, 0.684, 0.684}, {0.43, 0.0, 0.69, 0.69}, + {0.435, 0.0, 0.697, 0.697}, {0.44, 0.0, 0.7038, 0.7038}, {0.445, 0.0, 0.7093, 0.7093}, + {0.45, 0.0, 0.7133, 0.7133}, {0.455, 0.0, 0.7154, 0.7154}, {0.46, 0.0, 0.7152, 0.7152}, + {0.465, 0.0, 0.716, 0.716}, {0.47, 0.0, 0.716, 0.716}, {0.475, 0.0, 0.7166, 0.7166}, + {0.48, 0.0, 0.7166, 0.7166}, {0.485, 0.0, 0.7181, 0.7181}, {0.49, 0.0, 0.7199, 0.7199}, + {0.495, 0.0, 0.7225, 0.7225}, {0.5, 0.0, 0.7249, 0.7249}, {0.505, 0.0, 0.7291, 0.7291}, + {0.51, 0.0, 0.7327, 0.7327}, {0.515, 0.0, 0.7374, 0.7374}, {0.52, 0.0, 0.7408, 0.7408}, + {0.525, 0.0, 0.7457, 0.7457}, {0.53, 0.0, 0.7491, 0.7491}, {0.535, 0.0, 0.7524, 0.7524}, + {0.54, 0.0, 0.7548, 0.7548}, {0.545, 0.0, 0.7562, 0.7562}, {0.55, 0.0, 0.7577, 0.7577}, + {0.555, 0.0, 0.7584, 0.7584}, {0.56, 0.0, 0.7574, 0.7574}, {0.565, 0.0, 0.7568, 0.7568}, + {0.57, 0.0, 0.7553, 0.7553}, {0.575, 0.0, 0.7543, 0.7543}, {0.58, 0.0, 0.7529, 0.7529}, + {0.585, 0.0, 0.7511, 0.7511}, {0.59, 0.0, 0.7489, 0.7489}, {0.595, 0.0, 0.7474, 0.7474}, + {0.6, 0.0, 0.7458, 0.7458}, {0.605, 0.0, 0.7434, 0.7434}, {0.61, 0.0, 0.7419, 0.7419}, + {0.615, 0.0, 0.7399, 0.7399}, {0.62, 0.0, 0.7376, 0.7376}, {0.625, 0.0, 0.7353, 0.7353}, + {0.63, 0.0, 0.7339, 0.7339}, {0.635, 0.0, 0.7319, 0.7319}, {0.64, 0.0, 0.7297, 0.7297}, + {0.645, 0.0, 0.7277, 0.7277}, {0.65, 0.0, 0.7261, 0.7261}, {0.655, 0.0, 0.724, 0.724}, + {0.66, 0.0, 0.7221, 0.7221}, {0.665, 0.0, 0.7202, 0.7202}, {0.67, 0.0, 0.7186, 0.7186}, + {0.675, 0.0, 0.7154, 0.7154}, {0.68, 0.0, 0.7133, 0.7133}, {0.685, 0.0, 0.7124, 0.7124}, + {0.69, 0.0, 0.7105, 0.7105}, {0.695, 0.0, 0.7086, 0.7086}, {0.7, 0.0, 0.706, 0.706}, + {0.705, 0.0, 0.7048, 0.7048}, {0.71, 0.0, 0.7026, 0.7026}, {0.715, 0.0, 0.7004, 0.7004}, + {0.72, 0.0, 0.6986, 0.6986}, {0.725, 0.0, 0.6959, 0.6959}, {0.73, 0.0, 0.6944, 0.6944}, + {0.735, 0.0, 0.6916, 0.6916}, {0.74, 0.0, 0.69, 0.69}, {0.745, 0.0, 0.6879, 0.6879}, + {0.75, 0.0, 0.6855, 0.6855}, {0.755, 0.0, 0.6828, 0.6828}, {0.76, 0.0, 0.6809, 0.6809}, + {0.765, 0.0, 0.6781, 0.6781}, {0.77, 0.0, 0.6749, 0.6749}, {0.775, 0.0, 0.6731, 0.6731}, + {0.78, 0.0, 0.671, 0.671}, {0.785, 0.0, 0.6687, 0.6687}, {0.79, 0.0, 0.6659, 0.6659}, + {0.795, 0.0, 0.6633, 0.6633}, {0.8, 0.0, 0.6615, 0.6615}, {0.805, 0.0, 0.6588, 0.6588}, + {0.81, 0.0, 0.6569, 0.6569}, {0.815, 0.0, 0.6547, 0.6547}, {0.82, 0.0, 0.6531, 0.6531}, + {0.825, 0.0, 0.6508, 0.6508}, {0.83, 0.0, 0.6488, 0.6488}, {0.835, 0.0, 0.6478, 0.6478}, + {0.84, 0.0, 0.6471, 0.6471}, {0.845, 0.0, 0.645, 0.645}, {0.85, 0.0, 0.6451, 0.6451}, + {0.855, 0.0, 0.6433, 0.6433}, {0.86, 0.0, 0.6451, 0.6451}, {0.865, 0.0, 0.6461, 0.6461}, + {0.87, 0.0, 0.6474, 0.6474}, {0.875, 0.0, 0.6457, 0.6457}, {0.88, 0.0, 0.6444, 0.6444}, + {0.885, 0.0, 0.6442, 0.6442}, {0.89, 0.0, 0.6447, 0.6447}, {0.895, 0.0, 0.644, 0.644}, + {0.9, 0.0, 0.6455, 0.6455}, {0.905, 0.0, 0.6448, 0.6448}, {0.91, 0.0, 0.6462, 0.6462}, + {0.915, 0.0, 0.6466, 0.6466}, {0.92, 0.0, 0.6481, 0.6481}, {0.925, 0.0, 0.6496, 0.6496}, + {0.93, 0.0, 0.6502, 0.6502}, {0.935, 0.0, 0.6511, 0.6511}, {0.94, 0.0, 0.6524, 0.6524}, + {0.945, 0.0, 0.6535, 0.6535}, {0.95, 0.0, 0.6542, 0.6542}, {0.955, 0.0, 0.6559, 0.6559}, + {0.96, 0.0, 0.657, 0.657}, {0.965, 0.0, 0.6576, 0.6576}, {0.97, 0.0, 0.6585, 0.6585}, + {0.975, 0.0, 0.6599, 0.6599}, {0.98, 0.0, 0.6606, 0.6606}, {0.985, 0.0, 0.6621, 0.6621}, + {0.99, 0.0, 0.6634, 0.6634}, {0.995, 0.0, 0.6646, 0.6646}, {1.0, 0.0, 0.6658, 0.6658}, + {1.005, 0.0, 0.6664, 0.6664}, {1.01, 0.0, 0.667, 0.667}, {1.015, 0.0, 0.6684, 0.6684}, + {1.02, 0.0, 0.6686, 0.6686}, {1.025, 0.0, 0.6706, 0.6706}, {1.03, 0.0, 0.6711, 0.6711}, + {1.035, 0.0, 0.6719, 0.6719}, {1.04, 0.0, 0.673, 0.673}, {1.045, 0.0, 0.6743, 0.6743}, + {1.05, 0.0, 0.6747, 0.6747}, {1.055, 0.0, 0.6757, 0.6757}, {1.06, 0.0, 0.6767, 0.6767}, + {1.065, 0.0, 0.6776, 0.6776}, {1.07, 0.0, 0.678, 0.678}, {1.075, 0.0, 0.679, 0.679}, + {1.08, 0.0, 0.6789, 0.6789}, {1.085, 0.0, 0.6807, 0.6807}, {1.09, 0.0, 0.6809, 0.6809}, + {1.095, 0.0, 0.6825, 0.6825}, {1.1, 0.0, 0.6834, 0.6834}, {1.105, 0.0, 0.6837, 0.6837}, + {1.11, 0.0, 0.6842, 0.6842}, {1.115, 0.0, 0.6854, 0.6854}, {1.12, 0.0, 0.6849, 0.6849}, + {1.125, 0.0, 0.6857, 0.6857}, {1.13, 0.0, 0.6861, 0.6861}, {1.135, 0.0, 0.6862, 0.6862}, + {1.14, 0.0, 0.6874, 0.6874}, {1.145, 0.0, 0.6877, 0.6877}, {1.15, 0.0, 0.688, 0.688}, + {1.155, 0.0, 0.6887, 0.6887}, {1.16, 0.0, 0.6895, 0.6895}, {1.165, 0.0, 0.6895, 0.6895}, + {1.17, 0.0, 0.6906, 0.6906}, {1.175, 0.0, 0.6902, 0.6902}, {1.18, 0.0, 0.6893, 0.6893}, + {1.185, 0.0, 0.6897, 0.6897}, {1.19, 0.0, 0.6904, 0.6904}, {1.195, 0.0, 0.6908, 0.6908}, + {1.2, 0.0, 0.6918, 0.6918}, {1.205, 0.0, 0.6923, 0.6923}, {1.21, 0.0, 0.6931, 0.6931}, + {1.215, 0.0, 0.6936, 0.6936}, {1.22, 0.0, 0.695, 0.695}, {1.225, 0.0, 0.6958, 0.6958}, + {1.23, 0.0, 0.6969, 0.6969}, {1.235, 0.0, 0.6972, 0.6972}, {1.24, 0.0, 0.6981, 0.6981}, + {1.245, 0.0, 0.6984, 0.6984}, {1.25, 0.0, 0.6991, 0.6991}, {1.255, 0.0, 0.6994, 0.6994}, + {1.26, 0.0, 0.6999, 0.6999}, {1.265, 0.0, 0.7015, 0.7015}, {1.27, 0.0, 0.7012, 0.7012}, + {1.275, 0.0, 0.7018, 0.7018}, {1.28, 0.0, 0.7016, 0.7016}, {1.285, 0.0, 0.702, 0.702}, + {1.29, 0.0, 0.7028, 0.7028}, {1.295, 0.0, 0.7034, 0.7034}, {1.3, 0.0, 0.7033, 0.7033}, + {1.305, 0.0, 0.7036, 0.7036}, {1.31, 0.0, 0.7039, 0.7039}, {1.315, 0.0, 0.7043, 0.7043}, + {1.32, 0.0, 0.7049, 0.7049}, {1.325, 0.0, 0.7053, 0.7053}, {1.33, 0.0, 0.7051, 0.7051}, + {1.335, 0.0, 0.7054, 0.7054}, {1.34, 0.0, 0.7058, 0.7058}, {1.345, 0.0, 0.7056, 0.7056}, + {1.35, 0.0, 0.7055, 0.7055}, {1.355, 0.0, 0.7056, 0.7056}, {1.36, 0.0, 0.7059, 0.7059}, + {1.365, 0.0, 0.7062, 0.7062}, {1.37, 0.0, 0.7059, 0.7059}, {1.375, 0.0, 0.7064, 0.7064}, + {1.38, 0.0, 0.7067, 0.7067}, {1.385, 0.0, 0.707, 0.707}, {1.39, 0.0, 0.7073, 0.7073}, + {1.395, 0.0, 0.7082, 0.7082}, {1.4, 0.0, 0.708, 0.708}, {1.405, 0.0, 0.7082, 0.7082}, + {1.41, 0.0, 0.7083, 0.7083}, {1.415, 0.0, 0.7084, 0.7084}, {1.42, 0.0, 0.7083, 0.7083}, + {1.425, 0.0, 0.7095, 0.7095}, {1.43, 0.0, 0.7104, 0.7104}, {1.435, 0.0, 0.7112, 0.7112}, + {1.44, 0.0, 0.7115, 0.7115}, {1.445, 0.0, 0.7123, 0.7123}, {1.45, 0.0, 0.7131, 0.7131}, + {1.455, 0.0, 0.7137, 0.7137}, {1.46, 0.0, 0.7144, 0.7144}, {1.465, 0.0, 0.7149, 0.7149}, + {1.47, 0.0, 0.7153, 0.7153}, {1.475, 0.0, 0.7157, 0.7157}, {1.48, 0.0, 0.7159, 0.7159}, + {1.485, 0.0, 0.7166, 0.7166}, {1.49, 0.0, 0.7173, 0.7173}, {1.495, 0.0, 0.718, 0.718}, + {1.5, 0.0, 0.7185, 0.7185}, {1.505, 0.0, 0.7186, 0.7186}, {1.51, 0.0, 0.7192, 0.7192}, + {1.515, 0.0, 0.7203, 0.7203}, {1.52, 0.0, 0.7208, 0.7208}, {1.525, 0.0, 0.7221, 0.7221}, + {1.53, 0.0, 0.7223, 0.7223}, {1.535, 0.0, 0.7227, 0.7227}, {1.54, 0.0, 0.7235, 0.7235}, + {1.545, 0.0, 0.7243, 0.7243}, {1.55, 0.0, 0.725, 0.725}, {1.555, 0.0, 0.7244, 0.7244}, + {1.56, 0.0, 0.7253, 0.7253}, {1.565, 0.0, 0.7265, 0.7265}, {1.57, 0.0, 0.7262, 0.7262}, + {1.575, 0.0, 0.7262, 0.7262}, {1.58, 0.0, 0.727, 0.727}, {1.585, 0.0, 0.7274, 0.7274}, + {1.59, 0.0, 0.7284, 0.7284}, {1.595, 0.0, 0.7284, 0.7284}, {1.6, 0.0, 0.7285, 0.7285}, + {1.605, 0.0, 0.7289, 0.7289}, {1.61, 0.0, 0.7292, 0.7292}, {1.615, 0.0, 0.7294, 0.7294}, + {1.62, 0.0, 0.7287, 0.7287}, {1.625, 0.0, 0.7285, 0.7285}, {1.63, 0.0, 0.7279, 0.7279}, + {1.635, 0.0, 0.7266, 0.7266}, {1.64, 0.0, 0.7252, 0.7252}, {1.645, 0.0, 0.7229, 0.7229}, + {1.65, 0.0, 0.7178, 0.7178}, {1.655, 0.0, 0.7141, 0.7141}, {1.66, 0.0, 0.7101, 0.7101}, + {1.665, 0.0, 0.7081, 0.7081}, {1.67, 0.0, 0.7093, 0.7093}, {1.675, 0.0, 0.7108, 0.7108}, + {1.68, 0.0, 0.7109, 0.7109}, {1.685, 0.0, 0.7102, 0.7102}, {1.69, 0.0, 0.7102, 0.7102}, + {1.695, 0.0, 0.7113, 0.7113}, {1.7, 0.0, 0.7127, 0.7127}, {1.705, 0.0, 0.7139, 0.7139}, + {1.71, 0.0, 0.7154, 0.7154}, {1.715, 0.0, 0.7157, 0.7157}, {1.72, 0.0, 0.7166, 0.7166}, + {1.725, 0.0, 0.7159, 0.7159}, {1.73, 0.0, 0.7153, 0.7153}, {1.735, 0.0, 0.7171, 0.7171}, + {1.74, 0.0, 0.7178, 0.7178}, {1.745, 0.0, 0.7183, 0.7183}, {1.75, 0.0, 0.7206, 0.7206}, + {1.755, 0.0, 0.7213, 0.7213}, {1.76, 0.0, 0.7231, 0.7231}, {1.765, 0.0, 0.7251, 0.7251}, + {1.77, 0.0, 0.7266, 0.7266}, {1.775, 0.0, 0.7291, 0.7291}, {1.78, 0.0, 0.7303, 0.7303}, + {1.785, 0.0, 0.7315, 0.7315}, {1.79, 0.0, 0.7327, 0.7327}, {1.795, 0.0, 0.7332, 0.7332}, + {1.8, 0.0, 0.7339, 0.7339}, {1.805, 0.0, 0.7346, 0.7346}, {1.81, 0.0, 0.7345, 0.7345}, + {1.815, 0.0, 0.7359, 0.7359}, {1.82, 0.0, 0.735, 0.735}, {1.825, 0.0, 0.736, 0.736}, + {1.83, 0.0, 0.7372, 0.7372}, {1.835, 0.0, 0.7377, 0.7377}, {1.84, 0.0, 0.7391, 0.7391}, + {1.845, 0.0, 0.7382, 0.7382}, {1.85, 0.0, 0.7397, 0.7397}, {1.855, 0.0, 0.7411, 0.7411}, + {1.86, 0.0, 0.742, 0.742}, {1.865, 0.0, 0.7416, 0.7416}, {1.87, 0.0, 0.7415, 0.7415}, + {1.875, 0.0, 0.7425, 0.7425}, {1.88, 0.0, 0.7432, 0.7432}, {1.885, 0.0, 0.7417, 0.7417}, + {1.89, 0.0, 0.7415, 0.7415}, {1.895, 0.0, 0.7406, 0.7406}, {1.9, 0.0, 0.7399, 0.7399}, + {1.905, 0.0, 0.7389, 0.7389}, {1.91, 0.0, 0.7393, 0.7393}, {1.915, 0.0, 0.7395, 0.7395}, + {1.92, 0.0, 0.7401, 0.7401}, {1.925, 0.0, 0.7397, 0.7397}, {1.93, 0.0, 0.7408, 0.7408}, + {1.935, 0.0, 0.7417, 0.7417}, {1.94, 0.0, 0.7423, 0.7423}, {1.945, 0.0, 0.7423, 0.7423}, + {1.95, 0.0, 0.7422, 0.7422}, {1.955, 0.0, 0.7435, 0.7435}, {1.96, 0.0, 0.7422, 0.7422}, + {1.965, 0.0, 0.7432, 0.7432}, {1.97, 0.0, 0.7449, 0.7449}, {1.975, 0.0, 0.7479, 0.7479}, + {1.98, 0.0, 0.7477, 0.7477}, {1.985, 0.0, 0.7479, 0.7479}, {1.99, 0.0, 0.7481, 0.7481}, + {1.995, 0.0, 0.7493, 0.7493}, {2.0, 0.0, 0.7496, 0.7496}, {2.005, 0.0, 0.7501, 0.7501}, + {2.01, 0.0, 0.7503, 0.7503}, {2.015, 0.0, 0.7518, 0.7518}, {2.02, 0.0, 0.7517, 0.7517}, + {2.025, 0.0, 0.7523, 0.7523}, {2.03, 0.0, 0.7528, 0.7528}, {2.035, 0.0, 0.7531, 0.7531}, + {2.04, 0.0, 0.7531, 0.7531}, {2.045, 0.0, 0.7529, 0.7529}, {2.05, 0.0, 0.7539, 0.7539}, + {2.055, 0.0, 0.7564, 0.7564}, {2.06, 0.0, 0.7556, 0.7556}, {2.065, 0.0, 0.7544, 0.7544}, + {2.07, 0.0, 0.7537, 0.7537}, {2.075, 0.0, 0.7541, 0.7541}, {2.08, 0.0, 0.7517, 0.7517}, + {2.085, 0.0, 0.7532, 0.7532}, {2.09, 0.0, 0.7546, 0.7546}, {2.095, 0.0, 0.7541, 0.7541}, + {2.1, 0.0, 0.7539, 0.7539}, {2.105, 0.0, 0.7555, 0.7555}, {2.11, 0.0, 0.7536, 0.7536}, + {2.115, 0.0, 0.7544, 0.7544}, {2.12, 0.0, 0.7501, 0.7501}, {2.125, 0.0, 0.7442, 0.7442}, + {2.13, 0.0, 0.7399, 0.7399}, {2.135, 0.0, 0.7331, 0.7331}, {2.14, 0.0, 0.7283, 0.7283}, + {2.145, 0.0, 0.7282, 0.7282}, {2.15, 0.0, 0.731, 0.731}, {2.155, 0.0, 0.7431, 0.7431}, + {2.16, 0.0, 0.7431, 0.7431}, {2.165, 0.0, 0.7459, 0.7459}, {2.17, 0.0, 0.7519, 0.7519}, + {2.175, 0.0, 0.753, 0.753}, {2.18, 0.0, 0.7488, 0.7488}, {2.185, 0.0, 0.7548, 0.7548}, + {2.19, 0.0, 0.7505, 0.7505}, {2.195, 0.0, 0.7495, 0.7495}, {2.2, 0.0, 0.7456, 0.7456}, + {2.205, 0.0, 0.7457, 0.7457}, {2.21, 0.0, 0.7468, 0.7468}, {2.215, 0.0, 0.744, 0.744}, + {2.22, 0.0, 0.7412, 0.7412}, {2.225, 0.0, 0.7417, 0.7417}, {2.23, 0.0, 0.7395, 0.7395}, + {2.235, 0.0, 0.7341, 0.7341}, {2.24, 0.0, 0.7227, 0.7227}, {2.245, 0.0, 0.7105, 0.7105}, + {2.25, 0.0, 0.6971, 0.6971}, {2.255, 0.0, 0.676, 0.676}, {2.26, 0.0, 0.6582, 0.6582}, + {2.265, 0.0, 0.646, 0.646}, {2.27, 0.0, 0.6434, 0.6434}, {2.275, 0.0, 0.6433, 0.6433}, + {2.28, 0.0, 0.6464, 0.6464}, {2.285, 0.0, 0.6496, 0.6496}, {2.29, 0.0, 0.6549, 0.6549}, + {2.295, 0.0, 0.6597, 0.6597}, {2.3, 0.0, 0.6562, 0.6562}, {2.305, 0.0, 0.6573, 0.6573}, + {2.31, 0.0, 0.6587, 0.6587}, {2.315, 0.0, 0.66, 0.66}, {2.32, 0.0, 0.6659, 0.6659}, + {2.325, 0.0, 0.6758, 0.6758}, {2.33, 0.0, 0.676, 0.676}, {2.335, 0.0, 0.6785, 0.6785}, + {2.34, 0.0, 0.68, 0.68}, {2.345, 0.0, 0.681, 0.681}, {2.35, 0.0, 0.6778, 0.6778}, + {2.355, 0.0, 0.6796, 0.6796}, {2.36, 0.0, 0.683, 0.683}, {2.365, 0.0, 0.6793, 0.6793}, + {2.37, 0.0, 0.6823, 0.6823}, {2.375, 0.0, 0.6864, 0.6864}, {2.38, 0.0, 0.6836, 0.6836}, + {2.385, 0.0, 0.6786, 0.6786}, {2.39, 0.0, 0.6835, 0.6835}, {2.395, 0.0, 0.6795, 0.6795}, + {2.4, 0.0, 0.6834, 0.6834}, {2.405, 0.0, 0.689, 0.689}, {2.41, 0.0, 0.686, 0.686}, + {2.415, 0.0, 0.6899, 0.6899}, {2.42, 0.0, 0.6884, 0.6884}, {2.425, 0.0, 0.6912, 0.6912}, + {2.43, 0.0, 0.6936, 0.6936}, {2.435, 0.0, 0.6945, 0.6945}, {2.44, 0.0, 0.6927, 0.6927}, + {2.445, 0.0, 0.6792, 0.6792}, {2.45, 0.0, 0.6733, 0.6733}, {2.455, 0.0, 0.6649, 0.6649}, + {2.46, 0.0, 0.6712, 0.6712}, {2.465, 0.0, 0.6756, 0.6756}, {2.47, 0.0, 0.6799, 0.6799}, + {2.475, 0.0, 0.6874, 0.6874}, {2.48, 0.0, 0.6999, 0.6999}, {2.485, 0.0, 0.6993, 0.6993}, + {2.49, 0.0, 0.7081, 0.7081}, {2.495, 0.0, 0.7157, 0.7157}, {2.5, 0.0, 0.719, 0.719}}); + + return aMeasurements_31100; + } + +protected: + virtual void SetUp() + { + const auto solarRadiation{loadSolarRadiationFile()}; + const auto commonWavelengths{solarRadiation.getXArray()}; + + double thickness = 3.048e-3; // [m] + auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); + + auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); + + // Venetian blind material + thickness = 0.1; // [m] + auto aMaterialVenetian = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_31100(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + + + // make cell geometry + const auto slatWidth = 0.0148; // m + const auto slatSpacing = 0.0127; // m + const auto slatTiltAngle = 0; + const auto curvatureRadius = 0.03313057; + const size_t numOfSlatSegments = 5; + + std::shared_ptr Layer_Venetian = + CBSDFLayerMaker::getVenetianLayer(aMaterialVenetian, + aBSDF, + slatWidth, + slatSpacing, + slatTiltAngle, + curvatureRadius, + numOfSlatSegments, + DistributionMethod::DirectionalDiffuse, + true); + + const std::vector condensed{0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + + m_Layer = CMultiPaneBSDF::create({Layer_Venetian, Layer_102}, condensed); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); + } + +public: + CMultiPaneBSDF & getLayer() + { + return *m_Layer; + }; +}; + +TEST_F(MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed, TestBSDF1) +{ + SCOPED_TRACE("Begin Test: Specular and venetian directional IGU - BSDF."); + + const double minLambda = 0.3; + const double maxLambda = 2.5; + + CMultiPaneBSDF & aLayer = getLayer(); + + const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); + EXPECT_NEAR(0.70647946950574281, tauDiff, 1e-6); + + const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); + EXPECT_NEAR(0.13851613424753303, rhoDiff, 1e-6); + + const double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); + EXPECT_NEAR(0.056952691617347777, absDiff1, 1e-6); + + const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); + EXPECT_NEAR(0.098051704629376499, absDiff2, 1e-6); + + const double theta = 0; + const double phi = 0; + + const double tauHem = + aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.7840235777537089, tauHem, 1e-6); + + const double tauDir = + aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.77873794947009578, tauDir, 1e-6); + + const double rhoHem = + aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.073528107433706802, rhoHem, 1e-6); + + const double rhoDir = + aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.065521984706933489, rhoDir, 1e-6); + + const double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); + EXPECT_NEAR(0.053512578144017879, abs1, 1e-6); + + const double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); + EXPECT_NEAR(0.088935736668566703, abs2, 1e-6); +} diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum.unit.cpp new file mode 100644 index 00000000..aa5a9599 --- /dev/null +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum.unit.cpp @@ -0,0 +1,253 @@ +#include +#include + +#include "WCESpectralAveraging.hpp" +#include "WCEMultiLayerOptics.hpp" + + +using namespace SingleLayerOptics; +using namespace FenestrationCommon; +using namespace SpectralAveraging; +using namespace MultiLayerOptics; + +// Example on how to create multilayer BSDF from specular and venetian layers + +class MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum : public testing::Test +{ +private: + std::unique_ptr m_Layer; + + CSeries loadSolarRadiationFile() + { + // Full ASTM E891-87 Table 1 (Solar radiation) + CSeries aSolarRadiation( + {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, + {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, + {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, + {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, + {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, + {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, + {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, + {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, + {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, + {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, + {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, + {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, + {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, + {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, + {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, + {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, + {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, + {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, + {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, + {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, + {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, + {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, + {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, + {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, + {4.0450, 6.9} + + }); + + return aSolarRadiation; + } + + std::shared_ptr loadSampleData_NFRC_102() + { + auto aMeasurements_102 = CSpectralSampleData::create( + {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, + {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, + {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, + {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, + {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, + {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, + {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, + {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, + {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, + {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, + {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, + {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, + {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, + {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, + {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, + {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, + {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, + {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, + {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, + {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, + {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, + {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, + {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, + {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, + {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, + {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, + {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, + {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, + {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, + {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, + {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, + {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, + {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, + {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, + {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, + {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, + {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, + {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, + {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, + {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, + {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, + {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, + {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, + {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, + {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, + {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, + {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, + {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, + {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, + {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, + {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, + {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, + {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, + {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, + {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, + {2.500, 0.8220, 0.0680, 0.0680}}); + + return aMeasurements_102; + } + +protected: + virtual void SetUp() + { + auto thickness = 3.048e-3; // [m] + auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); + + const auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); + + // Venetian blind + const auto Tsol = 0.1; + const auto Rfsol = 0.7; + const auto Rbsol = 0.7; + + // Visible range + const auto Tvis = 0.2; + const auto Rfvis = 0.6; + const auto Rbvis = 0.6; + + const auto aMaterialVenetian = SingleLayerOptics::Material::dualBandMaterial( + Tsol, Tsol, Rfsol, Rbsol, Tvis, Tvis, Rfvis, Rbvis); + + // make cell geometry + const auto slatWidth = 0.016; // m + const auto slatSpacing = 0.012; // m + const auto slatTiltAngle = 45; + const auto curvatureRadius = 0.0; + const size_t numOfSlatSegments = 5; + + auto Layer_Venetian = CBSDFLayerMaker::getVenetianLayer(aMaterialVenetian, + aBSDF, + slatWidth, + slatSpacing, + slatTiltAngle, + curvatureRadius, + numOfSlatSegments, + DistributionMethod::DirectionalDiffuse, + false); + + const std::vector condensed{0.3, + 0.38, + 0.46, + 0.54, + 0.62, + 0.7, + 0.78, + 0.952, + 1.124, + 1.296, + 1.468, + 1.64, + 1.812, + 1.984, + 2.156, + 2.328, + 2.5}; + + m_Layer = CMultiPaneBSDF::create({Layer_102, Layer_Venetian}, condensed); + + const CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); + } + +public: + CMultiPaneBSDF & getLayer() + { + return *m_Layer; + }; +}; + +TEST_F(MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum, TestVenetianUniformBSDF) +{ + SCOPED_TRACE("Begin Test: Specular and venetian uniform IGU - BSDF."); + + const double minLambda = 0.3; + const double maxLambda = 2.5; + + CMultiPaneBSDF & aLayer = getLayer(); + + double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); + EXPECT_NEAR(0.258603651182443, tauDiff, 1e-6); + + double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); + EXPECT_NEAR(0.48998374580441773, rhoDiff, 1e-6); + + double absDiff1 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 1); + EXPECT_NEAR(0.14878842374206153, absDiff1, 1e-6); + + double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); + EXPECT_NEAR(0.10262417927107793, absDiff2, 1e-6); + + double theta = 0; + double phi = 0; + + double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.28706530011872539, tauHem, 1e-6); + + double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.050581982910334992, tauDir, 1e-6); + + double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.45449691321156827, rhoHem, 1e-6); + + double rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.07996926883736187, rhoDir, 1e-6); + + double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); + EXPECT_NEAR(0.14445866069190433, abs1, 1e-6); + + double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); + EXPECT_NEAR(0.11397912597780208, abs2, 1e-6); + + theta = 45; + phi = 78; + + tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.28212158919552938, tauHem, 1e-6); + + tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.098077249146745676, tauDir, 1e-6); + + rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.45450685540785085, rhoHem, 1e-6); + + rhoDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.17094126533560586, rhoDir, 1e-6); + + abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); + EXPECT_NEAR(0.15139412381757428, abs1, 1e-6); + + abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); + EXPECT_NEAR(0.11197743157904565, abs2, 1e-6); +} diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_FullSpectrum.unit.cpp similarity index 100% rename from src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform.unit.cpp rename to src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_FullSpectrum.unit.cpp diff --git a/src/SingleLayerOptics/src/BaseCell.cpp b/src/SingleLayerOptics/src/BaseCell.cpp index 97a65f24..b134f92b 100644 --- a/src/SingleLayerOptics/src/BaseCell.cpp +++ b/src/SingleLayerOptics/src/BaseCell.cpp @@ -77,7 +77,7 @@ namespace SingleLayerOptics return m_Material->getBandWavelengths(); } - void CBaseCell::setBandWavelengths(const std::vector & wavelengths) const + void CBaseCell::setBandWavelengths(const std::vector & wavelengths) { assert(m_Material != nullptr); m_Material->setBandWavelengths(wavelengths); diff --git a/src/SingleLayerOptics/src/BaseCell.hpp b/src/SingleLayerOptics/src/BaseCell.hpp index 2a1cb715..9f493dec 100644 --- a/src/SingleLayerOptics/src/BaseCell.hpp +++ b/src/SingleLayerOptics/src/BaseCell.hpp @@ -45,7 +45,7 @@ namespace SingleLayerOptics const CBeamDirection & t_Direction); std::vector getBandWavelengths() const; - void setBandWavelengths(const std::vector & wavelengths) const; + virtual void setBandWavelengths(const std::vector & wavelengths); int getBandIndex(double t_Wavelength) const; size_t getBandSize() const; diff --git a/src/SingleLayerOptics/src/VenetianCell.cpp b/src/SingleLayerOptics/src/VenetianCell.cpp index 9defe205..ecdec288 100644 --- a/src/SingleLayerOptics/src/VenetianCell.cpp +++ b/src/SingleLayerOptics/src/VenetianCell.cpp @@ -616,6 +616,12 @@ namespace SingleLayerOptics generateVenetianEnergy(); } + void CVenetianCell::setBandWavelengths(const std::vector & wavelengths) + { + CBaseCell::setBandWavelengths(wavelengths); + generateVenetianEnergy(); + } + double CVenetianCell::T_dir_dir(const Side t_Side, const CBeamDirection & t_Direction) { std::shared_ptr aCell = m_Energy.getCell(t_Side); diff --git a/src/SingleLayerOptics/src/VenetianCell.hpp b/src/SingleLayerOptics/src/VenetianCell.hpp index f64ad347..ceb3665f 100644 --- a/src/SingleLayerOptics/src/VenetianCell.hpp +++ b/src/SingleLayerOptics/src/VenetianCell.hpp @@ -196,6 +196,8 @@ namespace SingleLayerOptics void setSourceData(FenestrationCommon::CSeries & t_SourceData) override; + void setBandWavelengths(const std::vector & wavelengths) override; + double T_dir_dir(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; std::vector T_dir_dir_band(FenestrationCommon::Side t_Side, From 5ae4cf297b9e7421e6c4e5ef6372eb44b330bd6c Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 4 Aug 2022 13:16:24 -0700 Subject: [PATCH 48/81] Passing zero size detector data will no longer crash. --- src/MultiLayerOptics/src/CalculationProperties.cpp | 8 ++++++-- src/MultiLayerOptics/src/CalculationProperties.hpp | 1 + ...VenetianDirectional_n_Band_Material_Condensed.unit.cpp | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/MultiLayerOptics/src/CalculationProperties.cpp b/src/MultiLayerOptics/src/CalculationProperties.cpp index cca4be7b..890bd880 100644 --- a/src/MultiLayerOptics/src/CalculationProperties.cpp +++ b/src/MultiLayerOptics/src/CalculationProperties.cpp @@ -18,10 +18,14 @@ namespace MultiLayerOptics{ result = result.interpolate(CommonWavelengths.value()); } - if(DetectorData.has_value()) + if(isDetectorDataValid()) { result = result * DetectorData.value().interpolate(result.getXArray()); } return result; } -} \ No newline at end of file + bool CalculationProperties::isDetectorDataValid() const + { + return DetectorData.has_value() && DetectorData.value().size() != 0; + } +} // namespace MultiLayerOptics \ No newline at end of file diff --git a/src/MultiLayerOptics/src/CalculationProperties.hpp b/src/MultiLayerOptics/src/CalculationProperties.hpp index 2f596aaf..9d1aeae1 100644 --- a/src/MultiLayerOptics/src/CalculationProperties.hpp +++ b/src/MultiLayerOptics/src/CalculationProperties.hpp @@ -19,6 +19,7 @@ namespace MultiLayerOptics std::optional DetectorData; [[nodiscard]] FenestrationCommon::CSeries scaledSolarRadiation() const; + bool isDetectorDataValid() const; }; class MultiPaneCalcluationsSetter diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp index 3bf990ea..9416704e 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp @@ -329,8 +329,9 @@ class MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed : public t m_Layer = CMultiPaneBSDF::create({Layer_Venetian, Layer_102}, condensed); + CSeries detector; // Need to work even for empty detector. const CalculationProperties input{loadSolarRadiationFile(), - loadSolarRadiationFile().getXArray()}; + loadSolarRadiationFile().getXArray(), detector}; m_Layer->setCalculationProperties(input); } From 3a1600a39e765d3dbe1d9fdd08bad98c70d9e884 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 5 Aug 2022 11:38:21 -0700 Subject: [PATCH 49/81] getWavelengthsProperty in CAngularSpectralSample was using too restrictive tolerance. It is now replace with wavelength tolerance. --- src/SpectralAveraging/src/AngularSpectralSample.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SpectralAveraging/src/AngularSpectralSample.cpp b/src/SpectralAveraging/src/AngularSpectralSample.cpp index 769a6582..9c883eb8 100755 --- a/src/SpectralAveraging/src/AngularSpectralSample.cpp +++ b/src/SpectralAveraging/src/AngularSpectralSample.cpp @@ -177,8 +177,8 @@ namespace SpectralAveraging for(auto & aProperty : aProperties) { - if(aProperty.x() >= (minLambda - ConstantsData::floatErrorTolerance) - && aProperty.x() <= (maxLambda + ConstantsData::floatErrorTolerance)) + if(aProperty.x() >= (minLambda - ConstantsData::wavelengthErrorTolerance) + && aProperty.x() <= (maxLambda + ConstantsData::wavelengthErrorTolerance)) { aValues.push_back(aProperty.value()); } From 379673a40c80f409f672bd5314410710d18ea3d7 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 5 Aug 2022 12:57:33 -0700 Subject: [PATCH 50/81] Wavelength limts are now read from measure sample --- src/Common/src/FenestrationCommon.hpp | 8 ++++++++ .../src/AngularMeasurements.cpp | 10 ++++++++++ .../src/AngularMeasurements.hpp | 17 +++++------------ .../src/MeasuredSampleData.cpp | 6 ++++++ .../src/MeasuredSampleData.hpp | 1 + src/SpectralAveraging/src/SpectralSample.cpp | 5 +++++ src/SpectralAveraging/src/SpectralSample.hpp | 2 ++ 7 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/Common/src/FenestrationCommon.hpp b/src/Common/src/FenestrationCommon.hpp index b4c3e682..47c2cb43 100644 --- a/src/Common/src/FenestrationCommon.hpp +++ b/src/Common/src/FenestrationCommon.hpp @@ -83,6 +83,14 @@ namespace FenestrationCommon IR }; + struct Limits + { + Limits(double min, double max) : min(min), max(max) + {} + double min; + double max; + }; + class EnumWavelengthRange : public Enum {}; diff --git a/src/SpectralAveraging/src/AngularMeasurements.cpp b/src/SpectralAveraging/src/AngularMeasurements.cpp index e0ce4fdf..610ed6da 100644 --- a/src/SpectralAveraging/src/AngularMeasurements.cpp +++ b/src/SpectralAveraging/src/AngularMeasurements.cpp @@ -83,6 +83,11 @@ namespace SpectralAveraging m_Data->getMeasuredData()->interpolate(t_CommonWavelengths); } + FenestrationCommon::Limits CSingleAngularMeasurement::getWavelengthLimits() const + { + return m_Data->getWavelengthLimits(); + } + ////////////////////////////////////////////////////////////////////////////////////// //// CAngularMeasurements ////////////////////////////////////////////////////////////////////////////////////// @@ -182,5 +187,10 @@ namespace SpectralAveraging } } + FenestrationCommon::Limits CAngularMeasurements::getWavelengtLimits() const + { + return {m_CommonWavelengths[0], m_CommonWavelengths[m_CommonWavelengths.size() - 1]}; + } + } // namespace SpectralAveraging diff --git a/src/SpectralAveraging/src/AngularMeasurements.hpp b/src/SpectralAveraging/src/AngularMeasurements.hpp index 9d2da4cf..cb875295 100644 --- a/src/SpectralAveraging/src/AngularMeasurements.hpp +++ b/src/SpectralAveraging/src/AngularMeasurements.hpp @@ -1,17 +1,9 @@ -#ifndef ANGULARMEASUREMENT_H -#define ANGULARMEASUREMENT_H +#pragma once #include #include -namespace FenestrationCommon -{ - enum class Property; - enum class Side; - enum class IntegrationType; - class CSeries; - -} // namespace FenestrationCommon +#include "WCECommon.hpp" namespace SpectralAveraging { @@ -34,6 +26,7 @@ namespace SpectralAveraging double getAngle() const; std::shared_ptr getData() const; std::vector getWavelengthsFromSample() const; + [[nodiscard]] FenestrationCommon::Limits getWavelengthLimits() const; std::shared_ptr Interpolate(double const t_Angle, std::shared_ptr const & t_Data1, @@ -69,6 +62,8 @@ namespace SpectralAveraging // t_Angle that does not exist.So this is where you want to do your interpolation work virtual void setSourceData(FenestrationCommon::CSeries & t_SourceData); + [[nodiscard]] FenestrationCommon::Limits getWavelengtLimits() const; + private: // Do not forget storage for it std::shared_ptr m_SingleMeasurement; @@ -79,5 +74,3 @@ namespace SpectralAveraging } // namespace SpectralAveraging - -#endif diff --git a/src/SpectralAveraging/src/MeasuredSampleData.cpp b/src/SpectralAveraging/src/MeasuredSampleData.cpp index 041b1db5..6393998a 100644 --- a/src/SpectralAveraging/src/MeasuredSampleData.cpp +++ b/src/SpectralAveraging/src/MeasuredSampleData.cpp @@ -99,6 +99,12 @@ namespace SpectralAveraging return m_Property.at(std::make_pair(Property::T, Side::Front)).getXArray(); } + FenestrationCommon::Limits CSpectralSampleData::getWavelengthLimits() const + { + const auto wl{getWavelengths()}; + return {wl[0], wl[wl.size() - 1]}; + } + // Interpolate current sample data to new wavelengths set void CSpectralSampleData::interpolate(std::vector const & t_Wavelengths) { diff --git a/src/SpectralAveraging/src/MeasuredSampleData.hpp b/src/SpectralAveraging/src/MeasuredSampleData.hpp index 43dd092c..d15f70cd 100644 --- a/src/SpectralAveraging/src/MeasuredSampleData.hpp +++ b/src/SpectralAveraging/src/MeasuredSampleData.hpp @@ -72,6 +72,7 @@ namespace SpectralAveraging FenestrationCommon::Side side) override; virtual std::vector getWavelengths() const; + [[nodiscard]] virtual FenestrationCommon::Limits getWavelengthLimits() const; virtual void interpolate(std::vector const & t_Wavelengths) override; virtual void cutExtraData(double minLambda, double maxLambda) override; diff --git a/src/SpectralAveraging/src/SpectralSample.cpp b/src/SpectralAveraging/src/SpectralSample.cpp index f61ddedb..45d5ca9f 100644 --- a/src/SpectralAveraging/src/SpectralSample.cpp +++ b/src/SpectralAveraging/src/SpectralSample.cpp @@ -339,6 +339,11 @@ namespace SpectralAveraging m_SampleData->Filpped(flipped); } + FenestrationCommon::Limits CSpectralSample::getWavelengthLimits() const + { + return m_SampleData->getWavelengthLimits(); + } + ///////////////////////////////////////////////////////////////////////////////////// /// CPhotovoltaicSample ///////////////////////////////////////////////////////////////////////////////////// diff --git a/src/SpectralAveraging/src/SpectralSample.hpp b/src/SpectralAveraging/src/SpectralSample.hpp index 19fc40e3..d50de4db 100644 --- a/src/SpectralAveraging/src/SpectralSample.hpp +++ b/src/SpectralAveraging/src/SpectralSample.hpp @@ -136,6 +136,8 @@ namespace SpectralAveraging void Flipped(bool flipped); + [[nodiscard]] FenestrationCommon::Limits getWavelengthLimits() const; + protected: void calculateProperties() override; void calculateState() override; From 58bece98f2b79ae0277bb0f10f3adb74c60f991e Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 5 Aug 2022 16:12:36 -0700 Subject: [PATCH 51/81] Material creation no longer requires wavelength range. --- src/Common/src/Constants.hpp | 4 + src/Common/src/WavelengthRange.cpp | 6 + src/Common/src/WavelengthRange.hpp | 2 + src/Common/tst/units/WavelengthRange.unit.cpp | 58 ++++ .../src/MultiPaneSpecular.cpp | 16 - .../src/MultiPaneSpecular.hpp | 12 - .../units/DoubleLayerBSDFPerforated.unit.cpp | 8 +- .../units/DoubleLayerBSDFSpecular.unit.cpp | 6 +- .../EquivalentBSDFDoubleSpecular.unit.cpp | 6 +- ...lentBSDFTriplePerforatedInBetween.unit.cpp | 10 +- ...tSpecularAngularDualLayer_102_103.unit.cpp | 4 +- .../tst/units/MultiPaneBSDF_102_103.unit.cpp | 4 +- .../MultiPaneBSDF_102_103_SmallBasis.unit.cpp | 4 +- ...BSDF_102_103_Visible_QuarterBasis.unit.cpp | 4 +- .../MultiPaneBSDF_102_BSDFMaterial.unit.cpp | 2 +- ...aneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 2 +- ...02_CondensedSpectrum_QuarterBasis.unit.cpp | 2 +- ...SDF_102_FullSpectrum_QuarterBasis.unit.cpp | 2 +- ...iPaneBSDF_102_PerfectDiffuseSolar.unit.cpp | 2 +- ...aneBSDF_102_PerfectDiffuseVisible.unit.cpp | 2 +- ...tiPaneBSDF_102_PerforatedCircular.unit.cpp | 2 +- ..._102_PerforatedCircular_NFRC18000.unit.cpp | 13 +- ...aneBSDF_102_PerforatedRectangular.unit.cpp | 2 +- ...iPaneBSDF_102_VenetianDirectional.unit.cpp | 2 +- ...netianDirectional_n_Band_Material.unit.cpp | 4 +- ...ctional_n_Band_Material_Condensed.unit.cpp | 4 +- ...VenetianUniform_CondensedSpectrum.unit.cpp | 2 +- ..._102_VenetianUniform_FullSpectrum.unit.cpp | 2 +- ...2_VenetianUniform_Multiwavelength.unit.cpp | 4 +- .../units/MultiPaneBSDF_102_Woven.unit.cpp | 2 +- ...PaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 4 +- .../units/MultiPaneBSDF_20243_102.unit.cpp | 4 +- ...ltiPaneBSDF_BSDFMaterial_Photopic.unit.cpp | 2 +- ...eBSDF_SingleBandMaterial_Woven_IR.unit.cpp | 2 +- ...tiPanePhotovoltaicBSDF_SmallBasis.unit.cpp | 2 +- ...ovoltaicBSDF_SmallBasis_Condensed.unit.cpp | 4 +- .../tst/units/MultiPaneScattered_102.unit.cpp | 2 +- .../units/MultiPaneScattered_102_103.unit.cpp | 4 +- ...aneScattered_102_NonStandardSolar.unit.cpp | 2 +- ...iPaneScattered_102_PerfectDiffuse.unit.cpp | 2 +- ...eScattered_102_PerforatedCircular.unit.cpp | 2 +- ...attered_102_PerforatedRectangular.unit.cpp | 2 +- ...Scattered_102_VenetianDirectional.unit.cpp | 2 +- ...PaneScattered_102_VenetianUniform.unit.cpp | 2 +- .../MultiPaneScattered_102_Woven.unit.cpp | 2 +- .../units/MultiPaneScattered_21515.unit.cpp | 2 +- ...pecular_102_103_CondensedSpectrum.unit.cpp | 37 +- .../MultiPaneSpecular_102_103_EN410.unit.cpp | 33 +- ...PaneSpecular_102_103_FullSpectrum.unit.cpp | 74 ++-- ...ultiPaneSpecular_102_103_IR_Range.unit.cpp | 112 ------- ...aneSpecular_102_103_Visible_Range.unit.cpp | 68 ++-- ...ecular_1042_103_FirstLayerFlipped.unit.cpp | 40 ++- .../units/MultiPaneSpecular_21467.unit.cpp | 22 +- .../tst/units/MultiPaneSpecular_6046.unit.cpp | 32 +- .../units/MultiPaneSpecular_NFRC2600.unit.cpp | 37 +- .../units/MultiPaneSpecular_NFRC913.unit.cpp | 65 ++-- ...ltiPaneSpecular_CondensedSpectrum.unit.cpp | 9 +- ...rs_MultiPaneSpecular_FullSpectrum.unit.cpp | 11 +- .../Photovoltaic_DoublePane_Example1.unit.cpp | 5 +- .../Photovoltaic_DoublePane_Example2.unit.cpp | 5 +- src/SingleLayerOptics/src/Material.cpp | 208 ++---------- src/SingleLayerOptics/src/Material.hpp | 50 +-- .../src/MaterialDescription.cpp | 315 ++++-------------- .../src/MaterialDescription.hpp | 67 +--- .../tst/units/BSDFMaterialDualBand.unit.cpp | 6 +- ...SDFMaterialDualBandCondensedRange.unit.cpp | 6 +- .../tst/units/BSDFMaterialSingleBand.unit.cpp | 2 +- .../tst/units/CircularPerforatedCell.unit.cpp | 5 +- .../units/CircularPerforatedShade1.unit.cpp | 5 +- .../units/CircularPerforatedShade2.unit.cpp | 5 +- .../CircularPerforatedShadeNFRC18000.unit.cpp | 5 +- .../units/NFRC_102ScatteringLayer1.unit.cpp | 4 +- ...NFRC_102ScatteringLayer1_PHOTOPIC.unit.cpp | 3 +- .../units/NFRC_5439_SB70XL_Colors.unit.cpp | 3 +- .../units/NFRC_VE348ScatteringLayer1.unit.cpp | 31 +- ...FRC_VE348ScatteringLayer_IR_Range.unit.cpp | 7 +- .../tst/units/PerfectDiffuseCell1.unit.cpp | 5 +- .../tst/units/PerfectDiffuseCell2.unit.cpp | 5 +- .../tst/units/PerfectDiffuseShade1.unit.cpp | 5 +- .../units/RectangularPerforatedCell.unit.cpp | 5 +- ...angularPerforatedScatteringShade1.unit.cpp | 6 +- .../RectangularPerforatedShade1.unit.cpp | 5 +- .../RectangularPerforatedShade2.unit.cpp | 5 +- .../units/SinglePaneBSDF_VenetianIR.unit.cpp | 6 +- .../SpecularAngularLayerProperty_102.unit.cpp | 108 +----- .../units/SpecularAngularLayer_102.unit.cpp | 2 +- ...cularBSDFLayer_SingleBandMaterial.unit.cpp | 6 +- .../SpecularLayerMultiWavelength_102.unit.cpp | 7 +- .../tst/units/SpecularLayer_102.unit.cpp | 4 +- .../tst/units/SpecularLayer_103.unit.cpp | 4 +- .../tst/units/SpecularLayer_1042.unit.cpp | 112 +------ .../tst/units/VenetianCellCurved55_1.unit.cpp | 5 +- .../tst/units/VenetianCellCurved55_2.unit.cpp | 5 +- .../VenetianCellCurvedMinus55_1.unit.cpp | 5 +- .../VenetianCellCurvedMinus55_2.unit.cpp | 5 +- .../tst/units/VenetianCellFlat0_1.unit.cpp | 5 +- .../tst/units/VenetianCellFlat0_2.unit.cpp | 5 +- .../tst/units/VenetianCellFlat45_1.unit.cpp | 5 +- .../tst/units/VenetianCellFlat45_2.unit.cpp | 5 +- .../tst/units/VenetianCellFlat45_3.unit.cpp | 5 +- .../units/VenetianCellFlatMinus45_1.unit.cpp | 5 +- .../units/VenetianCellFlatMinus45_2.unit.cpp | 5 +- ...anDirectionalShadeCurvedMinus45_0.unit.cpp | 5 +- .../VenetianDirectionalShadeFlat0_1.unit.cpp | 5 +- .../VenetianDirectionalShadeFlat0_2.unit.cpp | 5 +- .../VenetianDirectionalShadeFlat0_3.unit.cpp | 5 +- .../VenetianDirectionalShadeFlat45_5.unit.cpp | 5 +- .../units/VenetianScatteringLayer1.unit.cpp | 5 +- ...netianUniformShadeCurvedMinus45_0.unit.cpp | 5 +- ...netianUniformShadeCurvedMinus55_0.unit.cpp | 5 +- ...tianUniformShadeCurvedZeroAngle_0.unit.cpp | 5 +- .../VenetianUniformShadeFlat0_1.unit.cpp | 5 +- .../VenetianUniformShadeFlat0_2.unit.cpp | 5 +- .../VenetianUniformShadeFlat45_1.unit.cpp | 5 +- .../units/VenetianUniformShadeMatrix.unit.cpp | 6 +- .../VenetianUniformShadeVertical.unit.cpp | 6 +- .../tst/units/WovenCell1.unit.cpp | 5 +- .../tst/units/WovenCell2.unit.cpp | 5 +- .../tst/units/WovenCell3.unit.cpp | 5 +- .../units/WovenShadeUniformMaterial.unit.cpp | 6 +- .../src/AngularMeasurements.cpp | 2 +- .../src/AngularMeasurements.hpp | 2 +- 122 files changed, 560 insertions(+), 1382 deletions(-) delete mode 100644 src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_IR_Range.unit.cpp diff --git a/src/Common/src/Constants.hpp b/src/Common/src/Constants.hpp index 78c927ca..7cae455d 100644 --- a/src/Common/src/Constants.hpp +++ b/src/Common/src/Constants.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include namespace ConstantsData { @@ -27,4 +28,7 @@ namespace ConstantsData //! will be used to create small offset from the end of the visible range to make sure that //! visible properties are returned in that case. static const double VisibleRangeOffset = 2 * wavelengthErrorTolerance; + + static const double MINLAMBDAVALUE = 0; + static const double MAXLAMBDAVALUE = std::numeric_limits::max(); } // namespace ConstantsData diff --git a/src/Common/src/WavelengthRange.cpp b/src/Common/src/WavelengthRange.cpp index 77946521..12d8d95d 100644 --- a/src/Common/src/WavelengthRange.cpp +++ b/src/Common/src/WavelengthRange.cpp @@ -41,4 +41,10 @@ namespace FenestrationCommon m_MaxLambda = wRange.endLambda; } + bool CWavelengthRange::isInRange(double value) const + { + return value >= (m_MinLambda - ConstantsData::floatErrorTolerance) + && value < (m_MaxLambda - ConstantsData::floatErrorTolerance); + } + } // namespace FenestrationCommon diff --git a/src/Common/src/WavelengthRange.hpp b/src/Common/src/WavelengthRange.hpp index 3f350eca..8cace947 100644 --- a/src/Common/src/WavelengthRange.hpp +++ b/src/Common/src/WavelengthRange.hpp @@ -28,6 +28,8 @@ namespace FenestrationCommon [[nodiscard]] double minLambda() const; [[nodiscard]] double maxLambda() const; + [[nodiscard]] bool isInRange(double value) const; + private: void setWavelengthRange(const WavelengthRange t_Range); double m_MinLambda; diff --git a/src/Common/tst/units/WavelengthRange.unit.cpp b/src/Common/tst/units/WavelengthRange.unit.cpp index 4acc0544..59ffabde 100644 --- a/src/Common/tst/units/WavelengthRange.unit.cpp +++ b/src/Common/tst/units/WavelengthRange.unit.cpp @@ -102,3 +102,61 @@ TEST_F(WavelengthRangeTest, TestISO9050Spectrum) EXPECT_NEAR(wavelenghts[i], correctWavelengths[i], 1e-6); } } + +TEST_F(WavelengthRangeTest, TestInVisibleRange_1) +{ + constexpr double wavelength{0.58}; + CWavelengthRange range{WavelengthRange::Visible}; + + EXPECT_EQ(true, range.isInRange(wavelength)); +} + +TEST_F(WavelengthRangeTest, TestInVisibleRange_2) +{ + constexpr double wavelength{0.38}; + CWavelengthRange range{WavelengthRange::Visible}; + + EXPECT_EQ(true, range.isInRange(wavelength)); +} + +TEST_F(WavelengthRangeTest, TestInVisibleRange_3) +{ + constexpr double wavelength{0.3799}; + CWavelengthRange range{WavelengthRange::Visible}; + + EXPECT_EQ(false, range.isInRange(wavelength)); +} + +TEST_F(WavelengthRangeTest, TestInVisibleRange_4) +{ + constexpr double wavelength{0.78}; + CWavelengthRange range{WavelengthRange::Visible}; + + EXPECT_EQ(true, range.isInRange(wavelength)); +} + +TEST_F(WavelengthRangeTest, TestInVisibleRange_5) +{ + constexpr double wavelength{0.780001}; + CWavelengthRange range{WavelengthRange::Visible}; + + EXPECT_EQ(true, range.isInRange(wavelength)); +} + +TEST_F(WavelengthRangeTest, TestInVisibleRange_6) +{ + constexpr double wavelength{0.780002}; + CWavelengthRange range{WavelengthRange::Visible}; + + EXPECT_EQ(false, range.isInRange(wavelength)); +} + +TEST_F(WavelengthRangeTest, TestInVisibleRange_7) +{ + constexpr double wavelength{0.780003}; + CWavelengthRange range{WavelengthRange::Visible}; + + auto test{range.isInRange(wavelength)}; + + EXPECT_EQ(false, range.isInRange(wavelength)); +} \ No newline at end of file diff --git a/src/MultiLayerOptics/src/MultiPaneSpecular.cpp b/src/MultiLayerOptics/src/MultiPaneSpecular.cpp index 2facb22f..5d4c499e 100644 --- a/src/MultiLayerOptics/src/MultiPaneSpecular.cpp +++ b/src/MultiLayerOptics/src/MultiPaneSpecular.cpp @@ -73,13 +73,6 @@ namespace MultiLayerOptics new CMultiPaneSpecular(layers, matrixWavelengths)); } - double CMultiPaneSpecular::getPropertySimple( - PropertySimple t_Property, Side t_Side, Scattering t_Scattering, double t_Theta, double) - { - return getPropertySimple( - getMinLambda(), getMaxLambda(), t_Property, t_Side, t_Scattering, t_Theta); - } - double CMultiPaneSpecular::getPropertySimple(const double minLambda, const double maxLambda, FenestrationCommon::PropertySimple t_Property, @@ -192,15 +185,6 @@ namespace MultiLayerOptics return aIntegrator.value(); } - double CMultiPaneSpecular::getAbsorptanceLayer(size_t index, - FenestrationCommon::Side side, - FenestrationCommon::ScatteringSimple scattering, - double theta, - double) - { - return getAbsorptanceLayer(getMinLambda(), getMaxLambda(), index, side, scattering, theta); - } - double CMultiPaneSpecular::getAbsorptanceLayer(double minLambda, double maxLambda, size_t index, diff --git a/src/MultiLayerOptics/src/MultiPaneSpecular.hpp b/src/MultiLayerOptics/src/MultiPaneSpecular.hpp index bc5a2b76..a7437931 100644 --- a/src/MultiLayerOptics/src/MultiPaneSpecular.hpp +++ b/src/MultiLayerOptics/src/MultiPaneSpecular.hpp @@ -63,12 +63,6 @@ namespace MultiLayerOptics const std::optional> & matrixWavelengths = std::nullopt); - double getPropertySimple(FenestrationCommon::PropertySimple t_Property, - FenestrationCommon::Side t_Side, - FenestrationCommon::Scattering t_Scattering, - double t_Theta = 0, - double t_Phi = 0); - double getPropertySimple(double minLambda, double maxLambda, FenestrationCommon::PropertySimple t_Property, @@ -103,12 +97,6 @@ namespace MultiLayerOptics [[nodiscard]] size_t size() const; - double getAbsorptanceLayer(size_t index, - FenestrationCommon::Side side, - FenestrationCommon::ScatteringSimple scattering, - double theta = 0, - double phi = 0); - double getAbsorptanceLayer(double minLambda, double maxLambda, size_t index, diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp index 550d282c..77d6c333 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFPerforated.unit.cpp @@ -271,11 +271,9 @@ class TestDoubleLayerBSDFPerforated : public testing::Test double thickness = 3.048e-3; // [m] MaterialType aType = MaterialType::Monolithic; - double minLambda = 0.3; - double maxLambda = 2.5; - auto aMaterial = SingleLayerOptics::Material::nBandMaterial( - aMeasurements, thickness, aType, minLambda, maxLambda); + auto aMaterial = + SingleLayerOptics::Material::nBandMaterial(aMeasurements, thickness, aType); auto aLayer102 = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); aLayer102->setSourceData(aSolarRadiation); @@ -286,7 +284,7 @@ class TestDoubleLayerBSDFPerforated : public testing::Test double Rfmat = 0.75; double Rbmat = 0.66; std::shared_ptr perfMaterial = - std::make_shared(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + std::make_shared(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry double x = 22.5; // mm diff --git a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp index 30239935..8eadc3b8 100644 --- a/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/DoubleLayerBSDFSpecular.unit.cpp @@ -277,11 +277,9 @@ class TestDoubleLayerBSDFSpecular : public testing::Test double thickness = 3.048e-3; // [m] MaterialType aType = MaterialType::Monolithic; - double minLambda = 0.3; - double maxLambda = 2.5; - auto aMaterial = SingleLayerOptics::Material::nBandMaterial( - aMeasurements, thickness, aType, minLambda, maxLambda); + auto aMaterial = + SingleLayerOptics::Material::nBandMaterial(aMeasurements, thickness, aType); auto aLayer102 = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); aLayer102->setSourceData(aSolarRadiation); diff --git a/src/MultiLayerOptics/tst/units/EquivalentBSDFDoubleSpecular.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentBSDFDoubleSpecular.unit.cpp index 3dae0d49..a1052bdb 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentBSDFDoubleSpecular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentBSDFDoubleSpecular.unit.cpp @@ -112,10 +112,8 @@ class TestEquivalentBSDFDoubleSpecular : public testing::Test const auto thickness = 3.048e-3; // [m] const MaterialType aType = MaterialType::Monolithic; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = SingleLayerOptics::Material::nBandMaterial( - aMeasurements_102, thickness, aType, minLambda, maxLambda); + const auto aMaterial = + SingleLayerOptics::Material::nBandMaterial(aMeasurements_102, thickness, aType); auto aLayer102 = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); aLayer102->setSourceData(aSolarRadiation); diff --git a/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp index 3c195c4f..09d50bca 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentBSDFTriplePerforatedInBetween.unit.cpp @@ -272,10 +272,8 @@ class TestEquivalentBSDFTriplePerforatedInBetween : public testing::Test double thickness = 3.048e-3; // [m] MaterialType aType = MaterialType::Monolithic; - double minLambda = 0.3; - double maxLambda = 2.5; - auto aMaterial = SingleLayerOptics::Material::nBandMaterial( - aMeasurements, thickness, aType, minLambda, maxLambda); + auto aMaterial = + SingleLayerOptics::Material::nBandMaterial(aMeasurements, thickness, aType); auto aLayer102 = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); @@ -286,8 +284,8 @@ class TestEquivalentBSDFTriplePerforatedInBetween : public testing::Test double Tmat = 0.2; double Rfmat = 0.75; double Rbmat = 0.66; - auto perfMaterial = SingleLayerOptics::Material::singleBandMaterial( - Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + auto perfMaterial = + SingleLayerOptics::Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry double x = 22.5; // mm diff --git a/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularDualLayer_102_103.unit.cpp b/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularDualLayer_102_103.unit.cpp index dcb1e310..d959a02a 100644 --- a/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularDualLayer_102_103.unit.cpp +++ b/src/MultiLayerOptics/tst/units/EquivalentSpecularAngularDualLayer_102_103.unit.cpp @@ -714,7 +714,7 @@ class EquivalentSpecularAngularDualLayer_102_103 : public testing::Test double thickness = 3.048e-3; // [m] const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); auto aCell_102 = SingleLayerOptics::SpecularLayer::createLayer(aMaterial_102); @@ -744,7 +744,7 @@ class EquivalentSpecularAngularDualLayer_102_103 : public testing::Test m_Measurements->addMeasurement(aAngular9); const auto aMaterial_103 = - std::make_shared(m_Measurements, WavelengthRange::Solar); + std::make_shared(m_Measurements); auto angularLayer = SingleLayerOptics::SpecularLayer::createLayer(aMaterial_103); // Finds combination of two wavelength sets without going outside of wavelenght range for diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp index 38f72202..27291cda 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103.unit.cpp @@ -186,10 +186,10 @@ class MultiPaneBSDF_102_103 : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] auto aMaterial_103 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); // BSDF definition is needed as well as its material representation const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp index a6ba6a3f..ca4115fc 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_SmallBasis.unit.cpp @@ -185,10 +185,10 @@ class MultiPaneBSDF_102_103_SmallBasis : public testing::Test { double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] auto aMaterial_103 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible_QuarterBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible_QuarterBasis.unit.cpp index 3efdb6bf..5706c4fe 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible_QuarterBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_103_Visible_QuarterBasis.unit.cpp @@ -332,10 +332,10 @@ class MultiPaneBSDF_102_103_Visible_QuarterBasis : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] auto aMaterial_103 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); // BSDF definition is needed as well as its material representation const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp index c96b5a69..7c870e98 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial.unit.cpp @@ -168,7 +168,7 @@ class MultiPaneBSDF_102_BSDFMaterial : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto tf = loadTf(); auto tb = loadTf(); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index 363b8454..b5de7d9c 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -1342,7 +1342,7 @@ return { // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Full); auto tfSolar = TransmittanceFrontSolar(); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp index cac2de88..a3b4b5a0 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis.unit.cpp @@ -128,7 +128,7 @@ class MultiPaneBSDF_102_CondensedSpectrum_QuarterBasis : public testing::Test // Create material from samples constexpr double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp index 3132b6d5..88145c8b 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_FullSpectrum_QuarterBasis.unit.cpp @@ -128,7 +128,7 @@ class MultiPaneBSDF_102_FullSpectrum_QuarterBasis : public testing::Test // Create material from samples constexpr double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp index c8dc17b4..f382f0f7 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseSolar.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneBSDF_102_PerfectDiffuseSolar : public testing::Test const auto commonWL{loadSolarRadiationFile().getXArray()}; auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); aMaterial_102->setBandWavelengths(commonWL); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp index b3547fee..4730c954 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerfectDiffuseVisible.unit.cpp @@ -237,7 +237,7 @@ class MultiPaneBSDF_102_PerfectDiffuse_Visible : public testing::Test { auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp index a619a882..785df216 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneBSDF_102_Perforated : public testing::Test auto thickness = 3.048e-3; // [m] const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp index 717f461b..b3081dfd 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedCircular_NFRC18000.unit.cpp @@ -281,20 +281,15 @@ class MultiPaneBSDF_102_PerforatedCircular_NFRC18000 : public testing::Test auto thickness_102 = 3.048e-3; // [m] - auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial(loadSampleData_NFRC_102(), - thickness_102, - MaterialType::Monolithic, - WavelengthRange::Solar); + auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_102(), thickness_102, MaterialType::Monolithic); aMaterial_102->setBandWavelengths(wl); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); const auto thickness_31111{0.00023}; - auto aMaterial_31111 = - SingleLayerOptics::Material::nBandMaterial(loadSampleData_NFRC_31111(), - thickness_31111, - MaterialType::Monolithic, - WavelengthRange::Solar); + auto aMaterial_31111 = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_31111(), thickness_31111, MaterialType::Monolithic); aMaterial_31111->setBandWavelengths(wl); // make cell geometry diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp index 88faae06..ea17c88a 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_PerforatedRectangular.unit.cpp @@ -122,7 +122,7 @@ class MultiPaneBSDF_102_PerforatedRectangular : public testing::Test { auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp index d48c13e8..5a39897c 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional.unit.cpp @@ -122,7 +122,7 @@ class MultiPaneBSDF_102_VenetianDirectional : public testing::Test { double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp index ecd885a7..25ffd21a 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material.unit.cpp @@ -279,7 +279,7 @@ class MultiPaneBSDF_102_VenetianDirectional_n_Band_Material : public testing::Te double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); aMaterial_102->setBandWavelengths(commonWavelengths); @@ -290,7 +290,7 @@ class MultiPaneBSDF_102_VenetianDirectional_n_Band_Material : public testing::Te // Venetian blind material thickness = 0.1; // [m] auto aMaterialVenetian = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_31100(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_31100(), thickness, MaterialType::Monolithic); aMaterialVenetian->setBandWavelengths(commonWavelengths); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp index 9416704e..dbfaa292 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed.unit.cpp @@ -279,7 +279,7 @@ class MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed : public t double thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); @@ -288,7 +288,7 @@ class MultiPaneBSDF_102_VenetianDirectional_n_Band_Material_Condensed : public t // Venetian blind material thickness = 0.1; // [m] auto aMaterialVenetian = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_31100(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_31100(), thickness, MaterialType::Monolithic); // make cell geometry diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum.unit.cpp index aa5a9599..813253fd 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum.unit.cpp @@ -120,7 +120,7 @@ class MultiPaneBSDF_102_VenetianUniform_CondensedSpectrum : public testing::Test { auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_FullSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_FullSpectrum.unit.cpp index 9e7f075e..39f86ef5 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_FullSpectrum.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_FullSpectrum.unit.cpp @@ -122,7 +122,7 @@ class MultiPaneBSDF_102_VenetianUniform : public testing::Test { auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp index 522ad270..a413cb94 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_VenetianUniform_Multiwavelength.unit.cpp @@ -189,7 +189,7 @@ class MultiPaneBSDF_102_VenetianUniformMultiWL : public testing::Test { auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); @@ -199,7 +199,7 @@ class MultiPaneBSDF_102_VenetianUniformMultiWL : public testing::Test thickness = 1.5e-3; // [m] auto aMaterial_Venetian = SingleLayerOptics::Material::nBandMaterial( - loadVenetianBlindMaterial(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadVenetianBlindMaterial(), thickness, MaterialType::Monolithic); // make cell geometry const auto slatWidth = 0.016; // m diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp index f3a1c80b..0325b475 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven.unit.cpp @@ -122,7 +122,7 @@ class MultiPaneBSDF_102_Woven : public testing::Test { auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index 45fc43f0..4d40aeec 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -279,7 +279,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); aMaterial_102->setBandWavelengths(commonWavelengths); @@ -289,7 +289,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test // Woven material thickness = 0.1; // [m] auto aWovenMaterial = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_31100(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_31100(), thickness, MaterialType::Monolithic); aWovenMaterial->setBandWavelengths(commonWavelengths); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp index eec98b85..3f4d8b11 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_20243_102.unit.cpp @@ -351,10 +351,10 @@ class MultiPaneBSDF_20243_103 : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] auto aMaterial_20243 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_20243(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_20243(), thickness, MaterialType::Monolithic); // BSDF definition is needed as well as its material representation const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp index a3b5aa38..5deb934d 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_BSDFMaterial_Photopic.unit.cpp @@ -814,7 +814,7 @@ class MultiPaneBSDF_BSDFMaterial_Photopic : public testing::Test const auto rbVisible = loadRbVisible(); const auto aBSDFMaterial = Material::singleBandBSDFMaterial( - tfVisible, tbVisible, rfVisible, rbVisible, aBSDF, WavelengthRange::Visible); + tfVisible, tbVisible, rfVisible, rbVisible, aBSDF); aBSDFMaterial->setBandWavelengths(fiveNMWavelenths()); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_SingleBandMaterial_Woven_IR.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_SingleBandMaterial_Woven_IR.unit.cpp index 52a39c88..d7d778bb 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_SingleBandMaterial_Woven_IR.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_SingleBandMaterial_Woven_IR.unit.cpp @@ -26,7 +26,7 @@ class MultiPaneBSDF_SingleBandMaterial_Woven_IR : public testing::Test const auto RfIR = 0.1; const auto RbIR = 0.1; - auto aMaterial = Material::singleBandMaterial(TIR, TIR, RfIR, RbIR, WavelengthRange::IR); + auto aMaterial = Material::singleBandMaterial(TIR, TIR, RfIR, RbIR); // make cell geometry const auto diameter = 0.002; // m diff --git a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp index 8187eee1..8608722e 100644 --- a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis.unit.cpp @@ -1805,7 +1805,7 @@ class MultiPanePhotovoltaicBSDF_SmallBasis : public testing::Test double thickness = 3.048e-3; // [m] const auto aMaterial_1 = Material::nBandPhotovoltaicMaterial( - pvSample, thickness, MaterialType::Monolithic, WavelengthRange::Solar); + pvSample, thickness, MaterialType::Monolithic); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Small); auto Layer_1 = CBSDFLayerMaker::getPhotovoltaicSpecularLayer(aMaterial_1, aBSDF, table()); diff --git a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp index 645b21a7..65dcafd4 100644 --- a/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPanePhotovoltaicBSDF_SmallBasis_Condensed.unit.cpp @@ -1825,8 +1825,8 @@ class MultiPanePhotovoltaicBSDF_SmallBasis_Condensed : public testing::Test std::make_shared(*loadSampleData_1(), eqeFront(), eqeBack()); double thickness = 3.048e-3; // [m] - const auto aMaterial_1 = Material::nBandPhotovoltaicMaterial( - pvSample, thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_1 = + Material::nBandPhotovoltaicMaterial(pvSample, thickness, MaterialType::Monolithic); aMaterial_1->setBandWavelengths(condensedSpectrum()); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102.unit.cpp index eb441e1a..c66cd85c 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneScattered_102 : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); CScatteringLayer Layer102 = CScatteringLayer::createSpecularLayer(aMaterial_102); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_103.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_103.unit.cpp index cf859054..406b1c00 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_103.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_103.unit.cpp @@ -186,10 +186,10 @@ class MultiPaneScattered_102_103 : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] auto aMaterial_103 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); const CScatteringLayer Layer102 = CScatteringLayer::createSpecularLayer(aMaterial_102); const CScatteringLayer Layer103 = CScatteringLayer::createSpecularLayer(aMaterial_103); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_NonStandardSolar.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_NonStandardSolar.unit.cpp index b6c4faa5..2d418e63 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_NonStandardSolar.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_NonStandardSolar.unit.cpp @@ -203,7 +203,7 @@ class MultiPaneScattered_102_NonStandardSolar : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); CScatteringLayer Layer102 = CScatteringLayer::createSpecularLayer(aMaterial_102); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerfectDiffuse.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerfectDiffuse.unit.cpp index 71a39a6a..fdf846b4 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerfectDiffuse.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerfectDiffuse.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneScattered_102_PerfectDiffuse : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); // Solar range const auto Tsol = 0.0; diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerforatedCircular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerforatedCircular.unit.cpp index 01857402..00d7ae51 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerforatedCircular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerforatedCircular.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneScattered_102_PerforatedCircular : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); // Setting circular perforated shade with double range material const auto Tsol = 0.1; diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerforatedRectangular.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerforatedRectangular.unit.cpp index c23efe03..206f4624 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerforatedRectangular.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_PerforatedRectangular.unit.cpp @@ -128,7 +128,7 @@ class MultiPaneScattered_102_PerforatedRectangular : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); // Setting rectangular perforated shade with double range material const auto Tsol = 0.1; diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_VenetianDirectional.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_VenetianDirectional.unit.cpp index df131e2e..bedd8256 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_VenetianDirectional.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_VenetianDirectional.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneScattered_102_VenetianDirectional : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); // Venetian blind material // Solar range diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_VenetianUniform.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_VenetianUniform.unit.cpp index eabd53f1..b383784e 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_VenetianUniform.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_VenetianUniform.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneScattered_102_VenetianUniform : public testing::Test // Create material from samples auto thickness = 3.048e-3; // [m] auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); // Venetian blind material // Solar range diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_Woven.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_Woven.unit.cpp index be5c7470..602d20a5 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_Woven.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_102_Woven.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneScattered_102_Woven : public testing::Test // Create material from samples const auto thickness = 3.048e-3; // [m] const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); // Solar const auto Tsol = 0.0; diff --git a/src/MultiLayerOptics/tst/units/MultiPaneScattered_21515.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneScattered_21515.unit.cpp index ab0faa05..f0e2903c 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneScattered_21515.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneScattered_21515.unit.cpp @@ -123,7 +123,7 @@ class MultiPaneScattered_21515 : public testing::Test // Create material from samples auto thickness = 0.18e-3; // [m] auto aMaterial_21515 = SingleLayerOptics::Material::nBandMaterial( - loadSampleData_NFRC_21515(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_21515(), thickness, MaterialType::Monolithic); CScatteringLayer Layer21515 = CScatteringLayer::createSpecularLayer(aMaterial_21515); diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_CondensedSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_CondensedSpectrum.unit.cpp index 59cffedb..97bbbba4 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_CondensedSpectrum.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_CondensedSpectrum.unit.cpp @@ -182,12 +182,12 @@ class MultiPaneSpecular_102_103_CondensedSpectrum : public testing::Test virtual void SetUp() { double thickness = 3.048e-3; // [m] - const auto aMaterial_102 = Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_102 = + Material::nBandMaterial(loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] - const auto aMaterial_103 = Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_103 = + Material::nBandMaterial(loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); auto layer102 = SpecularLayer::createLayer(aMaterial_102); @@ -216,7 +216,6 @@ class MultiPaneSpecular_102_103_CondensedSpectrum : public testing::Test const CalculationProperties input{loadSolarRadiationFile(), loadSolarRadiationFile().getXArray()}; m_Layer->setCalculationProperties(input); - } public: @@ -252,38 +251,38 @@ TEST_F(MultiPaneSpecular_102_103_CondensedSpectrum, TestAngle0) const std::vector AbsorptanceFront{aLayer.getAbsorptanceLayers( minLambda, maxLambda, Side::Front, ScatteringSimple::Direct, angle, 0)}; - const double AbsFront1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + const double AbsFront1 = aLayer.getAbsorptanceLayer( + minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.09886828346187998, AbsFront1, 1e-6); EXPECT_NEAR(0.09886828346187998, AbsorptanceFront[0], 1e-6); - const double AbsFront2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + const double AbsFront2 = aLayer.getAbsorptanceLayer( + minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.12579200884067865, AbsFront2, 1e-6); EXPECT_NEAR(0.12579200884067865, AbsorptanceFront[1], 1e-6); const std::vector AbsorptanceBack{aLayer.getAbsorptanceLayers( minLambda, maxLambda, Side::Back, ScatteringSimple::Direct, angle, 0)}; - const double AbsBack1 = - aLayer.getAbsorptanceLayer(1, Side::Back, ScatteringSimple::Direct, angle, 0); + const double AbsBack1 = aLayer.getAbsorptanceLayer( + minLambda, maxLambda, 1, Side::Back, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.16896549433713057, AbsBack1, 1e-6); EXPECT_NEAR(0.16896549433713057, AbsorptanceBack[0], 1e-6); - const double AbsBack2 = - aLayer.getAbsorptanceLayer(2, Side::Back, ScatteringSimple::Direct, angle, 0); + const double AbsBack2 = aLayer.getAbsorptanceLayer( + minLambda, maxLambda, 2, Side::Back, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.063851365359220133, AbsBack2, 1e-6); EXPECT_NEAR(0.063851365359220133, AbsorptanceBack[1], 1e-6); - const double Them = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); + const double Them = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.55134962796067644, Them, 1e-6); - const double Rfhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); + const double Rfhem = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.20101014299215508, Rfhem, 1e-6); - const double Rbhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); + const double Rbhem = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.18703361935727306, Rbhem, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_EN410.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_EN410.unit.cpp index 7d0881bf..6f56d668 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_EN410.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_EN410.unit.cpp @@ -173,19 +173,13 @@ class MultiPaneSpecular_102_103_EN410 : public testing::Test const auto aSolarRadiation = loadSolarRadiationFile(); double thickness = 3.048e-3; // [m] - const auto aMaterial_102 = Material::nBandMaterial(loadSampleData_NFRC_102(), - thickness, - MaterialType::Monolithic, - WavelengthRange::Solar, - IntegrationType::PreWeighted); + const auto aMaterial_102 = + Material::nBandMaterial(loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] - const auto aMaterial_103 = Material::nBandMaterial(loadSampleData_NFRC_103(), - thickness, - MaterialType::Monolithic, - WavelengthRange::Solar, - IntegrationType::PreWeighted); + const auto aMaterial_103 = + Material::nBandMaterial(loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); const auto layer102 = SpecularLayer::createLayer(aMaterial_102); @@ -211,37 +205,40 @@ TEST_F(MultiPaneSpecular_102_103_EN410, TestAngle0) const double angle = 0; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.621741, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.119697, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.110757, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.113512, Abs1, 1e-6); const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.145050, Abs2, 1e-6); const double Them = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.523013, Them, 1e-6); const double Rfhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.194344, Rfhem, 1e-6); const double Rbhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.178996, Rbhem, 1e-6); } \ No newline at end of file diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_FullSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_FullSpectrum.unit.cpp index a8dad832..bb188deb 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_FullSpectrum.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_FullSpectrum.unit.cpp @@ -182,12 +182,12 @@ class MultiPaneSpecular_102_103_FullSpectrum : public testing::Test virtual void SetUp() { double thickness = 3.048e-3; // [m] - const auto aMaterial_102 = Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_102 = + Material::nBandMaterial(loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] - const auto aMaterial_103 = Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_103 = + Material::nBandMaterial(loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); auto layer102 = SpecularLayer::createLayer(aMaterial_102); @@ -235,12 +235,12 @@ TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle0) minLambda, maxLambda, Side::Front, ScatteringSimple::Direct, angle, 0)}; const double AbsFront1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.096067402665126034, AbsFront1, 1e-6); EXPECT_NEAR(0.096067402665126034, AbsorptanceFront[0], 1e-6); const double AbsFront2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.12690376967777861, AbsFront2, 1e-6); EXPECT_NEAR(0.12690376967777861, AbsorptanceFront[1], 1e-6); @@ -248,25 +248,25 @@ TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle0) minLambda, maxLambda, Side::Back, ScatteringSimple::Direct, angle, 0)}; const double AbsBack1 = - aLayer.getAbsorptanceLayer(1, Side::Back, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Back, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.16714188545079209, AbsBack1, 1e-6); EXPECT_NEAR(0.16714188545079209, AbsorptanceBack[0], 1e-6); const double AbsBack2 = - aLayer.getAbsorptanceLayer(2, Side::Back, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Back, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.063948499642935183, AbsBack2, 1e-6); EXPECT_NEAR(0.063948499642935183, AbsorptanceBack[1], 1e-6); const double Them = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.55254043812883435, Them, 1e-6); const double Rfhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.20148222722498713, Rfhem, 1e-6); const double Rbhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.1875316037471744, Rbhem, 1e-6); } @@ -278,24 +278,27 @@ TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle10) CMultiPaneSpecular aLayer = *getLayer(); + const double minLambda = 0.3; + const double maxLambda = 2.5; + const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.6512009408137408, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.12464131190038928, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.11648460372395195, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.096643889655207982, Abs1, 1e-6); const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.12751385763066228, Abs2, 1e-6); } @@ -307,24 +310,27 @@ TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle20) CMultiPaneSpecular aLayer = *getLayer(); + const double minLambda = 0.3; + const double maxLambda = 2.5; + const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.64750874044040407, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.12483246115747181, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.11653428886495588, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.098381037477157776, Abs1, 1e-6); const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.12927776092496646, Abs2, 1e-6); } @@ -336,24 +342,27 @@ TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle30) CMultiPaneSpecular aLayer = *getLayer(); + const double minLambda = 0.3; + const double maxLambda = 2.5; + const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.6397093404230586, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.12704776228943535, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.11839109688423785, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.10130303643061224, Abs1, 1e-6); const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.13193986085689391, Abs2, 1e-6); } @@ -365,24 +374,27 @@ TEST_F(MultiPaneSpecular_102_103_FullSpectrum, TestAngle40) CMultiPaneSpecular aLayer = *getLayer(); + const double minLambda = 0.3; + const double maxLambda = 2.5; + const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.62414048337519745, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.13555493484076114, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.12602697935816962, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.10545945033456472, Abs1, 1e-6); const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.13484513144947669, Abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_IR_Range.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_IR_Range.unit.cpp deleted file mode 100644 index c386fab5..00000000 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_IR_Range.unit.cpp +++ /dev/null @@ -1,112 +0,0 @@ -#include -#include - -#include "WCESpectralAveraging.hpp" -#include "WCEMultiLayerOptics.hpp" -#include "WCESingleLayerOptics.hpp" -#include "WCECommon.hpp" - -using namespace SingleLayerOptics; -using namespace FenestrationCommon; -using namespace SpectralAveraging; -using namespace MultiLayerOptics; - -class MultiPaneSpecular_102_103_IR_Range : public testing::Test -{ -protected: - std::shared_ptr loadSampleData_NFRC_102() - { - auto aMeasurements_102 = CSpectralSampleData::create( - {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, - {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, - {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, - {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, - {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, - {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, - {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, - {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, - {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, - {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, - {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, - {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, - {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, - {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, - {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, - {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, - {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, - {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, - {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, - {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, - {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, - {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, - {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, - {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, - {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, - {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, - {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, - {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, - {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, - {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, - {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, - {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, - {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, - {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, - {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, - {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, - {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, - {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, - {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, - {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, - {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, - {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, - {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, - {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, - {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, - {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, - {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, - {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, - {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, - {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, - {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, - {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, - {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, - {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, - {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, - {2.500, 0.8220, 0.0680, 0.0680}}); - - return aMeasurements_102; - } - -protected: - virtual void SetUp() - {} - -public: -}; - -TEST_F(MultiPaneSpecular_102_103_IR_Range, TestNoAvailableData) -{ - const auto minLambda = 5.0; - const auto maxLambda = 100.0; - - double thickness = 3.048e-3; // [m] - EXPECT_THROW( - { - try - { - const auto aMaterial_102 = Material::nBandMaterial(loadSampleData_NFRC_102(), - thickness, - MaterialType::Monolithic, - minLambda, - maxLambda); - } - catch(const std::runtime_error & err) - { - EXPECT_STREQ(err.what(), - "Given measured sample does not have measurements withing " - "requested range. Calculation is not possible."); - throw; - } - }, - std::runtime_error); -} \ No newline at end of file diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_Visible_Range.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_Visible_Range.unit.cpp index 12f0b07e..e81301e6 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_Visible_Range.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_102_103_Visible_Range.unit.cpp @@ -329,16 +329,13 @@ class EquivalentSpecularLayer_102_103_Visible_Range : public testing::Test protected: virtual void SetUp() { - const auto minLambda = 0.38; - const auto maxLambda = 0.78; - double thickness = 3.048e-3; // [m] - const auto aMaterial_102 = Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, minLambda, maxLambda); + const auto aMaterial_102 = + Material::nBandMaterial(loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); thickness = 5.715e-3; // [m] - const auto aMaterial_103 = Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, minLambda, maxLambda); + const auto aMaterial_103 = + Material::nBandMaterial(loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); const auto layer102 = SpecularLayer::createLayer(aMaterial_102); const auto layer103 = SpecularLayer::createLayer(aMaterial_103); @@ -362,38 +359,41 @@ TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngle0) const double angle = 0; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); - const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + const double T = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.80004116239060297, T, 1e-6); - const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + const double Rf = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.148036, Rf, 1e-6); - const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + const double Rb = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.145341, Rb, 1e-6); - const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + const double Abs1 = aLayer.getAbsorptanceLayer( + minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.019482417027709444, Abs1, 1e-6); - const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + const double Abs2 = aLayer.getAbsorptanceLayer( + minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.032440156277910373, Abs2, 1e-6); - const double Them = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); + const double Them = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.69728960814264751, Them, 1e-6); - const double Rfhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); + const double Rfhem = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.235641, Rfhem, 1e-6); - const double Rbhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); + const double Rbhem = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.230712, Rbhem, 1e-6); } @@ -402,27 +402,29 @@ TEST_F(EquivalentSpecularLayer_102_103_Visible_Range, TestAngle10) SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 10 deg."); const double angle = 10; + const double minLambda = 0.3; + const double maxLambda = 2.5; CMultiPaneSpecular aLayer = *getLayer(); - const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + const double T = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.79971340390661316, T, 1e-6); - const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + const double Rf = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.148037, Rf, 1e-6); - const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + const double Rb = aLayer.getPropertySimple( + minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.145324, Rb, 1e-6); - const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + const double Abs1 = aLayer.getAbsorptanceLayer( + minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.019607658230143151, Abs1, 1e-6); - const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + const double Abs2 = aLayer.getAbsorptanceLayer( + minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.032641877809576232, Abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_1042_103_FirstLayerFlipped.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_1042_103_FirstLayerFlipped.unit.cpp index 3f60be62..2a75261f 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_1042_103_FirstLayerFlipped.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_1042_103_FirstLayerFlipped.unit.cpp @@ -373,12 +373,12 @@ class MultiPaneSpecular_1042_103_FirstLayerFlipped : public testing::Test virtual void SetUp() { double thickness = 3.18e-3; // [m] - const auto aMaterial_1042 = Material::nBandMaterial( - loadSampleData_NFRC_1042(), thickness, MaterialType::Coated, WavelengthRange::Solar); + const auto aMaterial_1042 = + Material::nBandMaterial(loadSampleData_NFRC_1042(), thickness, MaterialType::Coated); thickness = 5.715e-3; // [m] - const auto aMaterial_103 = Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_103 = + Material::nBandMaterial(loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); auto layer1042 = SpecularLayer::createLayer(aMaterial_1042); layer1042->Flipped(true); @@ -404,38 +404,41 @@ TEST_F(MultiPaneSpecular_1042_103_FirstLayerFlipped, TestAngle0) constexpr double angle = 0; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.3719583755488084, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.41715457981977144, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.28037294048520067, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.15627839622413103, Abs1, 1e-6); const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.054608648407289261, Abs2, 1e-6); const double Them = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.30817022451966275, Them, 1e-6); const double Rfhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.44942446269438591, Rfhem, 1e-6); const double Rbhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.31592238140198325, Rbhem, 1e-6); } @@ -445,25 +448,28 @@ TEST_F(MultiPaneSpecular_1042_103_FirstLayerFlipped, TestAngle40) const double angle = 40; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.34978043617677002, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.42031579031787092, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.27778429648957981, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.1726805764239672, Abs1, 1e-6); const double Abs2 = - aLayer.getAbsorptanceLayer(2, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 2, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.057223197081391772, Abs2, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_21467.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_21467.unit.cpp index f3ea3f3b..5ebe28d5 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_21467.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_21467.unit.cpp @@ -216,8 +216,8 @@ class EquivalentSpecularLayer_21467 : public testing::Test virtual void SetUp() { double thickness = 3.0e-3; // [m] - const auto aMaterial_21467 = Material::nBandMaterial( - loadSampleData_NFRC_21467(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_21467 = + Material::nBandMaterial(loadSampleData_NFRC_21467(), thickness, MaterialType::Monolithic); const auto layer102 = SpecularLayer::createLayer(aMaterial_21467); @@ -240,35 +240,37 @@ TEST_F(EquivalentSpecularLayer_21467, TestAngle0) SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); const double angle = 0; + const double minLambda = 0.3; + const double maxLambda = 2.5; CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.85759475979163102, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.10882832466003842, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.11455238848477553, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.033576915548329998, Abs1, 1e-6); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); + EXPECT_NEAR(0.033577933335637043, Abs1, 1e-6); const double Them = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.7836942732385721, Them, 1e-6); const double Rfhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.16945613901722306, Rfhem, 1e-6); const double Rbhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.17473195757158716, Rbhem, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_6046.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_6046.unit.cpp index 64affaf4..db02076b 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_6046.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_6046.unit.cpp @@ -111,8 +111,8 @@ class MultiPaneSpecular_6046 : public testing::Test virtual void SetUp() { double thickness = 5.66e-3; // [m] - const auto aMaterial_6046 = Material::nBandMaterial( - loadSampleData_NFRC_6046(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_6046 = + Material::nBandMaterial(loadSampleData_NFRC_6046(), thickness, MaterialType::Monolithic); const auto layer102 = SpecularLayer::createLayer(aMaterial_6046); @@ -138,32 +138,35 @@ TEST_F(MultiPaneSpecular_6046, TestAngle0) CMultiPaneSpecular aLayer = *getLayer(); + const double minLambda = 0.3; + const double maxLambda = 2.5; + const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.38299706431771591, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.28616972912819455, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.44953481057588385, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.33083320655408976, Abs1, 1e-6); const double Them = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.34930792564766677, Them, 1e-6); const double Rfhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.30355611406159649, Rfhem, 1e-6); const double Rbhem = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DiffuseDiffuse); EXPECT_NEAR(0.45861965268430771, Rbhem, 1e-6); } @@ -173,22 +176,25 @@ TEST_F(MultiPaneSpecular_6046, TestAngle10) const double angle = 10; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.38250500788015518, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.28612567799481614, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.44949838906463818, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.33136931412502829, Abs1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC2600.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC2600.unit.cpp index 71af0ef5..0c454585 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC2600.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC2600.unit.cpp @@ -211,8 +211,8 @@ class MultiPaneSpecular_NFRC2600 : public testing::Test const auto aSolarRadiation = loadSolarRadiationFile(); double thickness = 2.4892e-3; // [m] - const auto aMaterial_2600 = Material::nBandMaterial( - loadSampleData_NFRC_2600(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial_2600 = + Material::nBandMaterial(loadSampleData_NFRC_2600(), thickness, MaterialType::Monolithic); const auto layer2600 = SpecularLayer::createLayer(aMaterial_2600); @@ -236,22 +236,25 @@ TEST_F(MultiPaneSpecular_NFRC2600, TestAngle0) const double angle = 0; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.85364295496596676, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.070590408730950835, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.070317441387705334, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.075766636303082432, Abs1, 1e-6); } @@ -261,22 +264,25 @@ TEST_F(MultiPaneSpecular_NFRC2600, TestAngle10) const double angle = 10; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.85339696288847755, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.070603265452464065, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.070330211466021975, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.075999771659058385, Abs1, 1e-6); } @@ -286,22 +292,25 @@ TEST_F(MultiPaneSpecular_NFRC2600, TestAngle20) const double angle = 20; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.852378, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.070942533307403133, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.070668784173020249, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); EXPECT_NEAR(0.076680058161091746, Abs1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC913.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC913.unit.cpp index c9e024c0..f0aabb92 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC913.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneSpecular_NFRC913.unit.cpp @@ -143,7 +143,7 @@ class MultiPaneSpecular_NFRC913 : public testing::Test double thickness = 4.7752e-3; // [m] const auto aMaterial_913 = Material::nBandMaterial( - loadSampleData_NFRC_913(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + loadSampleData_NFRC_913(), thickness, MaterialType::Monolithic); const auto layer913 = SpecularLayer::createLayer(aMaterial_913); @@ -165,25 +165,28 @@ TEST_F(MultiPaneSpecular_NFRC913, TestAngle0) { SCOPED_TRACE("Begin Test: Specular MultiLayerOptics layer - angle = 0 deg."); + const auto minLambda = 0.3; + const auto maxLambda = 2.5; + const double angle = 0; CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.51340435548935426, T, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.51342298768469985, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055076203505663293, Rf, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.055073132534210208, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055076203505663293, Rb, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.055073132534210208, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.43151944100498218, Abs1, 1e-6); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); + EXPECT_NEAR(0.43150387978108995, Abs1, 1e-6); } TEST_F(MultiPaneSpecular_NFRC913, TestAngle10) @@ -192,23 +195,26 @@ TEST_F(MultiPaneSpecular_NFRC913, TestAngle10) const double angle = 10; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.51171451360613374, T, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.51173299377184223, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.05502860699106308, Rf, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.055025523768065188, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.05502860699106308, Rb, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.055025523768065188, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.43325687940280283, Abs1, 1e-6); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); + EXPECT_NEAR(0.43324148246009242, Abs1, 1e-6); } TEST_F(MultiPaneSpecular_NFRC913, TestAngle20) @@ -217,23 +223,26 @@ TEST_F(MultiPaneSpecular_NFRC913, TestAngle20) const double angle = 20; + const double minLambda = 0.3; + const double maxLambda = 2.5; + CMultiPaneSpecular aLayer = *getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.50652088749674984, T, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.50653889463475887, T, 1e-6); const double Rf = - aLayer.getPropertySimple(PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055135008696623841, Rf, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Front, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.055131883007555345, Rf, 1e-6); const double Rb = - aLayer.getPropertySimple(PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); - EXPECT_NEAR(0.055135008696623841, Rb, 1e-6); + aLayer.getPropertySimple(minLambda, maxLambda, PropertySimple::R, Side::Back, Scattering::DirectDirect, angle, 0); + EXPECT_NEAR(0.055131883007555345, Rb, 1e-6); const double Abs1 = - aLayer.getAbsorptanceLayer(1, Side::Front, ScatteringSimple::Direct, angle, 0); - EXPECT_NEAR(0.43834410380662625, Abs1, 1e-6); + aLayer.getAbsorptanceLayer(minLambda, maxLambda, 1, Side::Front, ScatteringSimple::Direct, angle, 0); + EXPECT_NEAR(0.43832922235768595, Abs1, 1e-6); } TEST_F(MultiPaneSpecular_NFRC913, TestAngleHemispherical10) @@ -248,11 +257,11 @@ TEST_F(MultiPaneSpecular_NFRC913, TestAngleHemispherical10) double Tfhem = aLayer.getHemisphericalProperty(Side::Front, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.43975348432468581, Tfhem, 1e-6); + EXPECT_NEAR(0.43975094746820914, Tfhem, 1e-6); double Tbhem = aLayer.getHemisphericalProperty(Side::Back, Property::T, aAngles, minLambda, maxLambda); - EXPECT_NEAR(0.43975348432468581, Tbhem, 1e-6); + EXPECT_NEAR(0.43975094746820914, Tbhem, 1e-6); double Rfhem = aLayer.getHemisphericalProperty(Side::Front, Property::R, aAngles, minLambda, maxLambda); @@ -263,5 +272,5 @@ TEST_F(MultiPaneSpecular_NFRC913, TestAngleHemispherical10) EXPECT_NEAR(0.106320, Rbhem, 1e-6); double Abs1 = aLayer.AbsHemispherical(1, aAngles, minLambda, maxLambda, Side::Front); - EXPECT_NEAR(0.44375256500392263, Abs1, 1e-6); + EXPECT_NEAR(0.44375524165517327, Abs1, 1e-6); } diff --git a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum.unit.cpp index a59a8b20..dba4cb11 100644 --- a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum.unit.cpp +++ b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum.unit.cpp @@ -320,8 +320,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum : public t SingleLayerOptics::Material::nBandMaterial(loadSampleData_NFRC_5439(), astmStandard, thickness, - FenestrationCommon::MaterialType::Monolithic, - FenestrationCommon::WavelengthRange::Visible); + FenestrationCommon::MaterialType::Monolithic); auto single_layer = SingleLayerOptics::SpecularLayer::createLayer(aMaterial); @@ -395,9 +394,9 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestTric SingleLayerOptics::Trichromatic T = aLayer->getTrichromatic( FenestrationCommon::PropertySimple::T, aSide, FenestrationCommon::Scattering::DirectDirect); - EXPECT_NEAR(70.05348398455908, T.X, 1e-6); + EXPECT_NEAR(70.053487153848835, T.X, 1e-6); EXPECT_NEAR(71.662456839737615, T.Y, 1e-6); - EXPECT_NEAR(91.883779247722487, T.Z, 1e-6); + EXPECT_NEAR(91.883789838379968, T.Z, 1e-6); } TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestTrichromatic_R) @@ -412,7 +411,7 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestTric FenestrationCommon::PropertySimple::R, aSide, FenestrationCommon::Scattering::DirectDirect); EXPECT_NEAR(7.3558417434189272, T.X, 1e-6); EXPECT_NEAR(7.635557, T.Y, 1e-6); - EXPECT_NEAR(13.006581034996834, T.Z, 1e-6); + EXPECT_NEAR(13.006582534154203, T.Z, 1e-6); } TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_CondensedSpectrum, TestRGB_T) diff --git a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum.unit.cpp b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum.unit.cpp index 209efdc4..fe7759b8 100644 --- a/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum.unit.cpp +++ b/src/MultiLayerOptics/tst/units/NFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum.unit.cpp @@ -319,8 +319,7 @@ class TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum : public testin SingleLayerOptics::Material::nBandMaterial(loadSampleData_NFRC_5439(), astmStandard, thickness, - FenestrationCommon::MaterialType::Monolithic, - FenestrationCommon::WavelengthRange::Visible); + FenestrationCommon::MaterialType::Monolithic); auto single_layer = SingleLayerOptics::SpecularLayer::createLayer(aMaterial); @@ -372,9 +371,9 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestTrichroma SingleLayerOptics::Trichromatic T = aLayer->getTrichromatic( FenestrationCommon::PropertySimple::T, aSide, FenestrationCommon::Scattering::DirectDirect); - EXPECT_NEAR(66.445296720302537, T.X, 1e-6); + EXPECT_NEAR(66.451485635952949, T.X, 1e-6); EXPECT_NEAR(71.662457, T.Y, 1e-6); - EXPECT_NEAR(71.940385010574701, T.Z, 1e-6); + EXPECT_NEAR(71.961066201212802, T.Z, 1e-6); } TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestTrichromatic_R) @@ -387,9 +386,9 @@ TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestTrichroma SingleLayerOptics::Trichromatic T = aLayer->getTrichromatic( FenestrationCommon::PropertySimple::R, aSide, FenestrationCommon::Scattering::DirectDirect); - EXPECT_NEAR(6.976970444136497, T.X, 1e-6); + EXPECT_NEAR(6.9776203002392698, T.X, 1e-6); EXPECT_NEAR(7.635557, T.Y, 1e-6); - EXPECT_NEAR(10.183499797132086, T.Z, 1e-6); + EXPECT_NEAR(10.186427316919987, T.Z, 1e-6); } TEST_F(TestNFRC_5439_SB70XL_Colors_MultiPaneSpecular_FullSpectrum, TestRGB_T) diff --git a/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example1.unit.cpp b/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example1.unit.cpp index b230d73c..dbffafd6 100644 --- a/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example1.unit.cpp @@ -1811,8 +1811,7 @@ class Photovoltaic_DoublePane_Example1 : public testing::Test const auto aMaterial_1 = Material::nBandPhotovoltaicMaterial(pvSample, thickness, - FenestrationCommon::MaterialType::Monolithic, - FenestrationCommon::WavelengthRange::Solar); + FenestrationCommon::MaterialType::Monolithic); aMaterial_1->setBandWavelengths(wl); @@ -1844,7 +1843,7 @@ TEST_F(Photovoltaic_DoublePane_Example1, Test1) auto aLayer = getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda,PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.2, T, 1e-6); const double absHeat = aLayer.AbsHeat(1, angle, minLambda, maxLambda, Side::Front); diff --git a/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example2.unit.cpp b/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example2.unit.cpp index 831638f4..08c38895 100644 --- a/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example2.unit.cpp +++ b/src/MultiLayerOptics/tst/units/Photovoltaic_DoublePane_Example2.unit.cpp @@ -1830,8 +1830,7 @@ class Photovoltaic_DoublePane_Example2 : public testing::Test const auto aMaterial_1 = Material::nBandPhotovoltaicMaterial(pvSample, thickness, - FenestrationCommon::MaterialType::Monolithic, - FenestrationCommon::WavelengthRange::Solar); + FenestrationCommon::MaterialType::Monolithic); aMaterial_1->setBandWavelengths(condensedSpectrum()); @@ -1863,7 +1862,7 @@ TEST_F(Photovoltaic_DoublePane_Example2, Test1) auto aLayer = getLayer(); const double T = - aLayer.getPropertySimple(PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); + aLayer.getPropertySimple(minLambda, maxLambda,PropertySimple::T, Side::Front, Scattering::DirectDirect, angle, 0); EXPECT_NEAR(0.2, T, 1e-6); const double absHeat = aLayer.AbsHeat(1, angle, minLambda, maxLambda, Side::Front); diff --git a/src/SingleLayerOptics/src/Material.cpp b/src/SingleLayerOptics/src/Material.cpp index 642b56d3..016a804f 100644 --- a/src/SingleLayerOptics/src/Material.cpp +++ b/src/SingleLayerOptics/src/Material.cpp @@ -23,9 +23,9 @@ namespace SingleLayerOptics const double Rbvis) { auto aSolarRangeMaterial = - std::make_shared(Tfsol, Tbsol, Rfsol, Rbsol, WavelengthRange::Solar); - auto aVisibleRangeMaterial = std::make_shared( - Tfvis, Tbvis, Rfvis, Rbvis, WavelengthRange::Visible); + std::make_shared(Tfsol, Tbsol, Rfsol, Rbsol); + auto aVisibleRangeMaterial = + std::make_shared(Tfvis, Tbvis, Rfvis, Rbvis); return std::make_shared(aVisibleRangeMaterial, aSolarRangeMaterial); } @@ -40,9 +40,9 @@ namespace SingleLayerOptics const double ratio) { auto aSolarRangeMaterial = - std::make_shared(Tfsol, Tbsol, Rfsol, Rbsol, WavelengthRange::Solar); - auto aVisibleRangeMaterial = std::make_shared( - Tfvis, Tbvis, Rfvis, Rbvis, WavelengthRange::Visible); + std::make_shared(Tfsol, Tbsol, Rfsol, Rbsol); + auto aVisibleRangeMaterial = + std::make_shared(Tfvis, Tbvis, Rfvis, Rbvis); return std::make_shared( aVisibleRangeMaterial, aSolarRangeMaterial, ratio); } @@ -58,9 +58,9 @@ namespace SingleLayerOptics const CSeries & solarRadiation) { auto aSolarRangeMaterial = - std::make_shared(Tfsol, Tbsol, Rfsol, Rbsol, WavelengthRange::Solar); - auto aVisibleRangeMaterial = std::make_shared( - Tfvis, Tbvis, Rfvis, Rbvis, WavelengthRange::Visible); + std::make_shared(Tfsol, Tbsol, Rfsol, Rbsol); + auto aVisibleRangeMaterial = + std::make_shared(Tfvis, Tbvis, Rfvis, Rbvis); return std::make_shared( aVisibleRangeMaterial, aSolarRangeMaterial, solarRadiation); } @@ -77,10 +77,10 @@ namespace SingleLayerOptics BSDFHemisphere const & hemisphere, double ratio) { - auto aSolarRangeMaterial = std::make_shared( - Tfsol, Tbsol, Rfsol, Rbsol, hemisphere, WavelengthRange::Solar); - auto aVisibleRangeMaterial = std::make_shared( - Tfvis, Tbvis, Rfvis, Rbvis, hemisphere, WavelengthRange::Visible); + auto aSolarRangeMaterial = + std::make_shared(Tfsol, Tbsol, Rfsol, Rbsol, hemisphere); + auto aVisibleRangeMaterial = + std::make_shared(Tfvis, Tbvis, Rfvis, Rbvis, hemisphere); return std::make_shared( aVisibleRangeMaterial, aSolarRangeMaterial, ratio); } @@ -97,10 +97,10 @@ namespace SingleLayerOptics BSDFHemisphere const & hemisphere, const FenestrationCommon::CSeries & solarRadiation) { - auto aSolarRangeMaterial = std::make_shared( - Tfsol, Tbsol, Rfsol, Rbsol, hemisphere, WavelengthRange::Solar); - auto aVisibleRangeMaterial = std::make_shared( - Tfvis, Tbvis, Rfvis, Rbvis, hemisphere, WavelengthRange::Visible); + auto aSolarRangeMaterial = + std::make_shared(Tfsol, Tbsol, Rfsol, Rbsol, hemisphere); + auto aVisibleRangeMaterial = + std::make_shared(Tfvis, Tbvis, Rfvis, Rbvis, hemisphere); return std::make_shared( aVisibleRangeMaterial, aSolarRangeMaterial, solarRadiation); } @@ -108,21 +108,9 @@ namespace SingleLayerOptics std::shared_ptr Material::singleBandMaterial(const double Tf, const double Tb, const double Rf, - const double Rb, - const double minLambda, - const double maxLambda) - { - return std::make_shared(Tf, Tb, Rf, Rb, minLambda, maxLambda); - } - - std::shared_ptr - Material::singleBandMaterial(const double Tf, - const double Tb, - const double Rf, - const double Rb, - const FenestrationCommon::WavelengthRange range) + const double Rb) { - return std::make_shared(Tf, Tb, Rf, Rb, range); + return std::make_shared(Tf, Tb, Rf, Rb); } std::shared_ptr @@ -130,101 +118,35 @@ namespace SingleLayerOptics const std::vector> & Tb, const std::vector> & Rf, const std::vector> & Rb, - const BSDFHemisphere & hemisphere, - FenestrationCommon::WavelengthRange t_Range) - { - return std::make_shared(Tf, Tb, Rf, Rb, hemisphere, t_Range); - } - - std::shared_ptr - Material::singleBandBSDFMaterial(const std::vector> & Tf, - const std::vector> & Tb, - const std::vector> & Rf, - const std::vector> & Rb, - const BSDFHemisphere & hemisphere, - const double minLambda, - const double maxLambda) - { - return std::make_shared( - Tf, Tb, Rf, Rb, hemisphere, minLambda, maxLambda); - } - - std::shared_ptr Material::nBandMaterial( - const std::shared_ptr & measurement, - const double thickness, - const FenestrationCommon::MaterialType materialType, - const FenestrationCommon::WavelengthRange range, - const FenestrationCommon::IntegrationType integrationType, - const double normalizationCoefficient) + const BSDFHemisphere & hemisphere) { - auto aSample = std::make_shared( - measurement, CSeries(), integrationType, normalizationCoefficient); - - // Need to determine if sample is subset of allowed range in which case integration range - // needs to be narrowed. - auto wlRange = CWavelengthRange(range); - auto minLambda = wlRange.minLambda(); - auto maxLambda = wlRange.maxLambda(); - - const auto sampleWls = measurement->getWavelengths(); - const auto minSample = sampleWls[0]; - const auto maxSample = sampleWls[sampleWls.size() - 1]; - - // Narrow down wavelengths in case sample is not measured in that range - if(minLambda < minSample) - { - minLambda = minSample; - } - - if(maxLambda > maxSample) - { - maxLambda = maxSample; - } - - // Narrow down sample in case it is over limits of desired measurements - aSample->cutExtraData(minLambda, maxLambda); - - if(aSample->getWavelengthsFromSample().empty()) - { - throw std::runtime_error("Given measured sample does not have measurements withing " - "requested range. Calculation is not possible."); - } - - return std::make_shared( - aSample, thickness, materialType, minLambda, maxLambda); + return std::make_shared(Tf, Tb, Rf, Rb, hemisphere); } std::shared_ptr Material::nBandMaterial( const std::shared_ptr & measurement, double thickness, - const FenestrationCommon::MaterialType materialType, - const double minLambda, - const double maxLambda, - const FenestrationCommon::IntegrationType integrationType, + FenestrationCommon::MaterialType materialType, + FenestrationCommon::IntegrationType integrationType, double normalizationCoefficient) { auto aSample = std::make_shared( measurement, CSeries(), integrationType, normalizationCoefficient); - // Narrow down sample in case it is over limits of desired measurements - aSample->cutExtraData(minLambda, maxLambda); if(aSample->getWavelengthsFromSample().empty()) { throw std::runtime_error("Given measured sample does not have measurements withing " "requested range. Calculation is not possible."); } - return std::make_shared( - aSample, thickness, materialType, minLambda, maxLambda); + return std::make_shared(aSample, thickness, materialType); } std::shared_ptr Material::nBandMaterial( const std::shared_ptr & measurement, - const CSeries & detectorData, + const FenestrationCommon::CSeries & detectorData, const double thickness, const FenestrationCommon::MaterialType materialType, - const double minLambda, - const double maxLambda, const FenestrationCommon::IntegrationType integrationType, const double normalizationCoefficient) { @@ -232,108 +154,32 @@ namespace SingleLayerOptics measurement, CSeries(), integrationType, normalizationCoefficient); aSample->setDetectorData(detectorData); - // Narrow down sample in case it is over limits of desired measurements - aSample->cutExtraData(minLambda, maxLambda); - - if(aSample->getWavelengthsFromSample().empty()) - { - throw std::runtime_error("Given measured sample does not have measurements withing " - "requested range. Calculation is not possible."); - } - - return std::make_shared( - aSample, thickness, materialType, minLambda, maxLambda); - } - - std::shared_ptr Material::nBandMaterial( - const std::shared_ptr & measurement, - const CSeries & detectorData, - const double thickness, - const FenestrationCommon::MaterialType materialType, - const FenestrationCommon::WavelengthRange t_Range, - const FenestrationCommon::IntegrationType integrationType, - const double normalizationCoefficient) - { - auto aSample = std::make_shared( - measurement, CSeries(), integrationType, normalizationCoefficient); - - // Need to determine if sample is subset of allowed range in which case integration range - // needs to be narrowed. - auto wlRange = CWavelengthRange(t_Range); - auto minLambda = wlRange.minLambda(); - auto maxLambda = wlRange.maxLambda(); - - const auto sampleWls = measurement->getWavelengths(); - const auto minSample = sampleWls[0]; - const auto maxSample = sampleWls[sampleWls.size() - 1]; - - // Narrow down wavelengths in case sample is not measured in that range - if(minLambda < minSample) - { - minLambda = minSample; - } - - if(maxLambda > maxSample) - { - maxLambda = maxSample; - } - - // Narrow down sample in case it is over limits of desired measurements - aSample->cutExtraData(minLambda, maxLambda); - if(aSample->getWavelengthsFromSample().empty()) { throw std::runtime_error("Given measured sample does not have measurements withing " "requested range. Calculation is not possible."); } - aSample->setDetectorData(detectorData); - return std::make_shared(aSample, thickness, materialType, t_Range); + return std::make_shared(aSample, thickness, materialType); } std::shared_ptr Material::nBandPhotovoltaicMaterial( const std::shared_ptr & measurement, double thickness, FenestrationCommon::MaterialType materialType, - double minLambda, - double maxLambda, FenestrationCommon::IntegrationType integrationType, double normalizationCoefficient) { auto aSample = std::make_shared( measurement, CSeries(), integrationType, normalizationCoefficient); - // Narrow down sample in case it is over limits of desired measurements - aSample->cutExtraData(minLambda, maxLambda); if(aSample->getWavelengthsFromSample().empty()) { throw std::runtime_error("Given measured sample does not have measurements withing " "requested range. Calculation is not possible."); } - return std::make_shared( - aSample, thickness, materialType, minLambda, maxLambda); - } - - std::shared_ptr Material::nBandPhotovoltaicMaterial( - const std::shared_ptr & measurement, - double thickness, - FenestrationCommon::MaterialType materialType, - const FenestrationCommon::WavelengthRange range, - FenestrationCommon::IntegrationType integrationType, - double normalizationCoefficient) - { - CWavelengthRange wlRange{range}; - const double minLambda{wlRange.minLambda()}; - const double maxLambda{wlRange.maxLambda()}; - - return nBandPhotovoltaicMaterial(measurement, - thickness, - materialType, - minLambda, - maxLambda, - integrationType, - normalizationCoefficient); + return std::make_shared(aSample, thickness, materialType); } } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/Material.hpp b/src/SingleLayerOptics/src/Material.hpp index 6e12c607..0f69e3ed 100644 --- a/src/SingleLayerOptics/src/Material.hpp +++ b/src/SingleLayerOptics/src/Material.hpp @@ -72,44 +72,21 @@ namespace SingleLayerOptics BSDFHemisphere const & hemisphere, const FenestrationCommon::CSeries & solarRadiation); - static std::shared_ptr singleBandMaterial( - double Tf, double Tb, double Rf, double Rb, double minLambda, double maxLambda); - - static std::shared_ptr singleBandMaterial( - double Tf, double Tb, double Rf, double Rb, FenestrationCommon::WavelengthRange range); - static std::shared_ptr - singleBandBSDFMaterial(const std::vector> & Tf, - const std::vector> & Tb, - const std::vector> & Rf, - const std::vector> & Rb, - const BSDFHemisphere & hemisphere, - FenestrationCommon::WavelengthRange t_Range); + singleBandMaterial(double Tf, double Tb, double Rf, double Rb); static std::shared_ptr singleBandBSDFMaterial(const std::vector> & Tf, const std::vector> & Tb, const std::vector> & Rf, const std::vector> & Rb, - const BSDFHemisphere & hemisphere, - const double minLambda, - const double maxLambda); + const BSDFHemisphere & hemisphere); - static std::shared_ptr - nBandMaterial(const std::shared_ptr & measurement, - double thickness, - FenestrationCommon::MaterialType materialType, - FenestrationCommon::WavelengthRange range, - FenestrationCommon::IntegrationType integrationType = - FenestrationCommon::IntegrationType::Trapezoidal, - double normalizationCoefficient = 1); static std::shared_ptr nBandMaterial(const std::shared_ptr & measurement, double thickness, FenestrationCommon::MaterialType materialType, - double minLambda, - double maxLambda, FenestrationCommon::IntegrationType integrationType = FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); @@ -119,18 +96,6 @@ namespace SingleLayerOptics const FenestrationCommon::CSeries & detectorData, const double thickness, const FenestrationCommon::MaterialType materialType, - const double minLambda, - const double maxLambda, - const FenestrationCommon::IntegrationType integrationType = - FenestrationCommon::IntegrationType::Trapezoidal, - const double normalizationCoefficient = 1); - - static std::shared_ptr - nBandMaterial(const std::shared_ptr & measurement, - const FenestrationCommon::CSeries & detectorData, - const double thickness, - const FenestrationCommon::MaterialType materialType, - const FenestrationCommon::WavelengthRange t_Range, const FenestrationCommon::IntegrationType integrationType = FenestrationCommon::IntegrationType::Trapezoidal, const double normalizationCoefficient = 1); @@ -139,17 +104,6 @@ namespace SingleLayerOptics const std::shared_ptr & measurement, double thickness, FenestrationCommon::MaterialType materialType, - double minLambda, - double maxLambda, - FenestrationCommon::IntegrationType integrationType = - FenestrationCommon::IntegrationType::Trapezoidal, - double normalizationCoefficient = 1); - - static std::shared_ptr nBandPhotovoltaicMaterial( - const std::shared_ptr & measurement, - double thickness, - FenestrationCommon::MaterialType materialType, - const FenestrationCommon::WavelengthRange range, FenestrationCommon::IntegrationType integrationType = FenestrationCommon::IntegrationType::Trapezoidal, double normalizationCoefficient = 1); diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index 550db283..acab9ae2 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -52,12 +52,10 @@ namespace SingleLayerOptics return modifiedValues; } - std::vector> - createNIRRange(const std::shared_ptr & t_PartialRange, + std::shared_ptr createNIRRange(const std::shared_ptr & t_PartialRange, const std::shared_ptr & t_FullRange, const double t_Fraction) { - std::vector> materials; double Tf_nir = modifyProperty(t_PartialRange->getProperty(Property::T, Side::Front), t_FullRange->getProperty(Property::T, Side::Front), @@ -73,30 +71,14 @@ namespace SingleLayerOptics t_FullRange->getProperty(Property::R, Side::Back), t_Fraction); - double minRangeLambda = t_PartialRange->getMinLambda(); - - if(minRangeLambda > 0.3) - { - std::shared_ptr aMaterial = std::make_shared( - Tf_nir, Tb_nir, Rf_nir, Rb_nir, 0.3, minRangeLambda); - materials.push_back(aMaterial); - } - - materials.push_back(t_PartialRange); - - double maxRangeLambda = t_PartialRange->getMaxLambda(); - std::shared_ptr aMaterial = std::make_shared( - Tf_nir, Tb_nir, Rf_nir, Rb_nir, maxRangeLambda, 2.5); - materials.push_back(aMaterial); - return materials; + return std::make_shared(Tf_nir, Tb_nir, Rf_nir, Rb_nir); } - std::vector> + std::shared_ptr createNIRRange(const std::shared_ptr & t_PartialRange, const std::shared_ptr & t_FullRange, const double t_Fraction) { - std::vector> materials; auto Tf_nir = modifyProperties(t_PartialRange->getBSDFMatrix(Property::T, Side::Front), t_FullRange->getBSDFMatrix(Property::T, Side::Front), @@ -112,29 +94,8 @@ namespace SingleLayerOptics t_FullRange->getBSDFMatrix(Property::R, Side::Back), t_Fraction); - double minRangeLambda = t_PartialRange->getMinLambda(); - - if(minRangeLambda > 0.3) - { - std::shared_ptr aMaterial = - std::make_shared(Tf_nir, - Tb_nir, - Rf_nir, - Rb_nir, - t_PartialRange->getHemisphere(), - 0.3, - minRangeLambda); - materials.push_back(aMaterial); - } - - materials.push_back(t_PartialRange); - - double maxRangeLambda = t_PartialRange->getMaxLambda(); - std::shared_ptr aMaterial = - std::make_shared( - Tf_nir, Tb_nir, Rf_nir, Rb_nir, t_PartialRange->getHemisphere(), maxRangeLambda, 2.5); - materials.push_back(aMaterial); - return materials; + return std::make_shared( + Tf_nir, Tb_nir, Rf_nir, Rb_nir, t_PartialRange->getHemisphere()); } //////////////////////////////////////////////////////////////////////////////////// @@ -160,15 +121,14 @@ namespace SingleLayerOptics //////////////////////////////////////////////////////////////////////////////////// CMaterial::CMaterial(const double minLambda, const double maxLambda) : - m_MinLambda(minLambda), m_MaxLambda(maxLambda), m_WavelengthsCalculated(false) + m_MinLambda(minLambda), + m_MaxLambda(maxLambda), + m_WavelengthsCalculated(false) {} - CMaterial::CMaterial(const WavelengthRange t_Range) : m_WavelengthsCalculated(false) - { - CWavelengthRange aRange = CWavelengthRange(t_Range); - m_MinLambda = aRange.minLambda(); - m_MaxLambda = aRange.maxLambda(); - } + CMaterial::CMaterial(FenestrationCommon::Limits wavelengthRange) : + CMaterial(wavelengthRange.min, wavelengthRange.max) + {} void CMaterial::setSourceData(CSeries &) { @@ -298,24 +258,8 @@ namespace SingleLayerOptics //////////////////////////////////////////////////////////////////////////////////// //// CMaterialSingleBand //////////////////////////////////////////////////////////////////////////////////// - CMaterialSingleBand::CMaterialSingleBand(const double t_Tf, - const double t_Tb, - const double t_Rf, - const double t_Rb, - const double minLambda, - const double maxLambda) : - CMaterial(minLambda, maxLambda) - { - m_Property[Side::Front] = std::make_shared(t_Tf, t_Rf); - m_Property[Side::Back] = std::make_shared(t_Tb, t_Rb); - } - - CMaterialSingleBand::CMaterialSingleBand(const double t_Tf, - const double t_Tb, - const double t_Rf, - const double t_Rb, - const WavelengthRange t_Range) : - CMaterial(t_Range) + CMaterialSingleBand::CMaterialSingleBand(double t_Tf, double t_Tb, double t_Rf, double t_Rb) : + CMaterial(ConstantsData::MINLAMBDAVALUE, ConstantsData::MAXLAMBDAVALUE) { m_Property[Side::Front] = std::make_shared(t_Tf, t_Rf); m_Property[Side::Back] = std::make_shared(t_Tb, t_Rb); @@ -343,52 +287,43 @@ namespace SingleLayerOptics std::vector CMaterialSingleBand::calculateBandWavelengths() { - std::vector aWavelengths; - aWavelengths.push_back(m_MinLambda); - aWavelengths.push_back(m_MaxLambda); - return aWavelengths; + return {m_MinLambda, m_MaxLambda}; } //////////////////////////////////////////////////////////////////////////////////// //// IMaterialDualBand //////////////////////////////////////////////////////////////////////////////////// - IMaterialDualBand::IMaterialDualBand(const std::shared_ptr & t_PartialRange, - const std::shared_ptr & t_FullRange, + IMaterialDualBand::IMaterialDualBand(const std::shared_ptr & visibleRange, + const std::shared_ptr & solarRange, double t_Ratio) : - CMaterial(t_FullRange->getMinLambda(), t_FullRange->getMaxLambda()), - m_MaterialFullRange(t_FullRange), - m_MaterialPartialRange(t_PartialRange), + CMaterial(solarRange->getMinLambda(), solarRange->getMaxLambda()), + m_MaterialSolarRange(solarRange), + m_MaterialVisibleRange(visibleRange), m_RangeCreator(std::bind(&IMaterialDualBand::createRangesFromRatio, this, t_Ratio)) {} - IMaterialDualBand::IMaterialDualBand(const std::shared_ptr & t_PartialRange, - const std::shared_ptr & t_FullRange, + IMaterialDualBand::IMaterialDualBand(const std::shared_ptr & visibleRange, + const std::shared_ptr & solarRange, const FenestrationCommon::CSeries & t_SolarRadiation) : - CMaterial(t_FullRange->getMinLambda(), t_FullRange->getMaxLambda()), - m_MaterialFullRange(t_FullRange), - m_MaterialPartialRange(t_PartialRange), + CMaterial(solarRange->getMinLambda(), solarRange->getMaxLambda()), + m_MaterialSolarRange(solarRange), + m_MaterialVisibleRange(visibleRange), m_RangeCreator( std::bind(&IMaterialDualBand::createRangesFromSolarRadiation, this, t_SolarRadiation)) {} void IMaterialDualBand::setSourceData(CSeries & t_SourceData) { - m_Materials.clear(); - m_MaterialFullRange->setSourceData(t_SourceData); - m_MaterialPartialRange->setSourceData(t_SourceData); - checkIfMaterialWithingSolarRange(*m_MaterialPartialRange); - //createUVRange(); - //double lowLambda = m_MaterialPartialRange->getMinLambda(); - //double highLambda = m_MaterialPartialRange->getMaxLambda(); - //CNIRRatio nirRatio = CNIRRatio(t_SourceData, lowLambda, highLambda); - createNIRRange(m_MaterialPartialRange, m_MaterialFullRange, ConstantsData::NIRRatio); + m_MaterialSolarRange->setSourceData(t_SourceData); + m_MaterialVisibleRange->setSourceData(t_SourceData); + createNIRRange(m_MaterialVisibleRange, m_MaterialSolarRange, ConstantsData::NIRRatio); } void IMaterialDualBand::setDetectorData(FenestrationCommon::CSeries & t_DetectorData) { - m_MaterialFullRange->setDetectorData(t_DetectorData); - m_MaterialPartialRange->setDetectorData(t_DetectorData); + m_MaterialSolarRange->setDetectorData(t_DetectorData); + m_MaterialVisibleRange->setDetectorData(t_DetectorData); } double IMaterialDualBand::getProperty(Property t_Property, @@ -396,7 +331,7 @@ namespace SingleLayerOptics const CBeamDirection & t_Incoming, const CBeamDirection & t_Outgoing) const { - return m_MaterialFullRange->getProperty(t_Property, t_Side, t_Incoming, t_Outgoing); + return m_MaterialSolarRange->getProperty(t_Property, t_Side, t_Incoming, t_Outgoing); } std::vector @@ -419,39 +354,7 @@ namespace SingleLayerOptics std::vector IMaterialDualBand::calculateBandWavelengths() { - m_RangeCreator(); - std::vector aWavelengths; - size_t size = m_Materials.size(); - for(size_t i = 0; i < size; ++i) - { - aWavelengths.push_back(m_Materials[i]->getMinLambda()); - } - - aWavelengths.push_back(m_Materials.back()->getMaxLambda()); - - return aWavelengths; - } - - void IMaterialDualBand::checkIfMaterialWithingSolarRange(const CMaterial & t_Material) - { - const double lowLambda = t_Material.getMinLambda(); - const double highLambda = t_Material.getMaxLambda(); - if(lowLambda < 0.3 || highLambda < 0.3 || lowLambda > 2.5 || highLambda > 2.5) - { - throw std::runtime_error("Material properties out of range. Wavelength range must be " - "between 0.3 and 2.5 microns."); - } - } - - void IMaterialDualBand::createUVRange() - { - double T = 0; - double R = 0; - double minLambda = 0.3; - double maxLambda = 0.32; - std::shared_ptr aUVMaterial = - std::make_shared(T, T, R, R, minLambda, maxLambda); - m_Materials.push_back(aUVMaterial); + return {0.3, 0.38, 0.78 + ConstantsData::VisibleRangeOffset, 2.5}; } CMaterialDualBand::CMaterialDualBand(const std::shared_ptr & t_PartialRange, @@ -470,63 +373,34 @@ namespace SingleLayerOptics const std::shared_ptr & t_FullRange, const double t_Fraction) { - auto materials = SingleLayerOptics::createNIRRange(t_PartialRange, t_FullRange, t_Fraction); - for(auto & material : materials) - { - m_Materials.push_back(material); - } + m_MaterialScaledRange = SingleLayerOptics::createNIRRange(t_PartialRange, t_FullRange, t_Fraction); } void IMaterialDualBand::createRangesFromRatio(double t_Ratio) { - if(!m_Materials.empty()) - { - return; - } - checkIfMaterialWithingSolarRange(*m_MaterialPartialRange); - //createUVRange(); - createNIRRange(m_MaterialPartialRange, m_MaterialFullRange, t_Ratio); + createNIRRange(m_MaterialVisibleRange, m_MaterialSolarRange, t_Ratio); if(!m_WavelengthsCalculated) { - m_Wavelengths = getWavelengthsFromMaterials(); + m_Wavelengths = calculateBandWavelengths(); m_WavelengthsCalculated = true; } } void IMaterialDualBand::createRangesFromSolarRadiation(const CSeries &) { - if(!m_Materials.empty()) - { - return; - } - checkIfMaterialWithingSolarRange(*m_MaterialPartialRange); - //createUVRange(); - //const double lowLambda = m_MaterialPartialRange->getMinLambda(); - //const double highLambda = m_MaterialPartialRange->getMaxLambda(); - // For now we have decided to use hard NIR ratio and not calculate it from the solar radiation. - // CNIRRatio nirRatio = CNIRRatio(t_SolarRadiation, lowLambda, highLambda); - createNIRRange(m_MaterialPartialRange, m_MaterialFullRange, ConstantsData::NIRRatio); + createNIRRange(m_MaterialVisibleRange, m_MaterialSolarRange, ConstantsData::NIRRatio); + if(!m_WavelengthsCalculated) { - m_Wavelengths = getWavelengthsFromMaterials(); + m_Wavelengths = calculateBandWavelengths(); m_WavelengthsCalculated = true; } } std::vector IMaterialDualBand::getWavelengthsFromMaterials() const { - std::vector result; - - if(m_MaterialFullRange != nullptr && m_MaterialPartialRange != nullptr) - { - result.emplace_back(m_MaterialFullRange->getMinLambda()); - result.emplace_back(m_MaterialPartialRange->getMinLambda()); - result.emplace_back(m_MaterialPartialRange->getMaxLambda()); - result.emplace_back(m_MaterialFullRange->getMaxLambda()); - } - - return result; + return m_Wavelengths; } std::shared_ptr @@ -534,15 +408,9 @@ namespace SingleLayerOptics { std::shared_ptr result; - for(const auto & material : m_Materials) - { - if(material->isWavelengthInRange(wavelength)) - { - result = material; - } - } + FenestrationCommon::CWavelengthRange range{WavelengthRange::Visible}; - return result; + return range.isInRange(wavelength) ? m_MaterialVisibleRange : m_MaterialScaledRange; } @@ -550,27 +418,11 @@ namespace SingleLayerOptics //// CMaterialSample //////////////////////////////////////////////////////////////////////////////////// - CMaterialSample::CMaterialSample(const std::shared_ptr & t_SpectralSample, - const double t_Thickness, - const MaterialType t_Type, - const double minLambda, - const double maxLambda) : - CMaterial(minLambda, maxLambda) - { - if(t_SpectralSample == nullptr) - { - throw std::runtime_error("Cannot create specular material from non-existing sample."); - } - - m_AngularSample = - std::make_shared(t_SpectralSample, t_Thickness, t_Type); - } - - CMaterialSample::CMaterialSample(const std::shared_ptr & t_SpectralSample, - const double t_Thickness, - const MaterialType t_Type, - const WavelengthRange t_Range) : - CMaterial(t_Range) + CMaterialSample::CMaterialSample( + const std::shared_ptr & t_SpectralSample, + double t_Thickness, + FenestrationCommon::MaterialType t_Type) : + CMaterial(t_SpectralSample->getWavelengthLimits()) { if(t_SpectralSample == nullptr) { @@ -637,19 +489,8 @@ namespace SingleLayerOptics CMaterialPhotovoltaicSample::CMaterialPhotovoltaicSample( const std::shared_ptr & t_SpectralSample, double t_Thickness, - FenestrationCommon::MaterialType t_Type, - double minLambda, - double maxLambda) : - CMaterialSample(t_SpectralSample, t_Thickness, t_Type, minLambda, maxLambda), - m_PVSample(t_SpectralSample) - {} - - CMaterialPhotovoltaicSample::CMaterialPhotovoltaicSample( - const std::shared_ptr & t_SpectralSample, - double t_Thickness, - FenestrationCommon::MaterialType t_Type, - FenestrationCommon::WavelengthRange t_Range) : - CMaterialSample(t_SpectralSample, t_Thickness, t_Type, t_Range), + FenestrationCommon::MaterialType t_Type) : + CMaterialSample(t_SpectralSample, t_Thickness, t_Type), m_PVSample(t_SpectralSample) {} @@ -664,24 +505,11 @@ namespace SingleLayerOptics //////////////////////////////////////////////////////////////////////////////////// CMaterialMeasured::CMaterialMeasured( - const std::shared_ptr & t_AngularMeasurements, - const double minLambda, - const double maxLambda) : - CMaterial(minLambda, maxLambda), m_AngularMeasurements(t_AngularMeasurements) + const std::shared_ptr & t_Measurements) : + CMaterial(t_Measurements->getWavelengthLimits()), + m_AngularMeasurements(t_Measurements) { - if(t_AngularMeasurements == nullptr) - { - throw std::runtime_error( - "Cannot create specular and angular material from non-existing sample."); - } - } - - CMaterialMeasured::CMaterialMeasured( - const std::shared_ptr & t_AngularMeasurements, - const WavelengthRange t_Range) : - CMaterial(t_Range), m_AngularMeasurements(t_AngularMeasurements) - { - if(t_AngularMeasurements == nullptr) + if(t_Measurements == nullptr) { throw std::runtime_error( "Cannot create specular and angular material from non-existing sample."); @@ -743,33 +571,9 @@ namespace SingleLayerOptics std::vector> const & t_Tb, std::vector> const & t_Rf, std::vector> const & t_Rb, - BSDFHemisphere const & t_Hemisphere, - double minLambda, - double maxLambda) : - CMaterial(minLambda, maxLambda), m_Hemisphere(t_Hemisphere) - { - validateMatrix(t_Tf, m_Hemisphere); - validateMatrix(t_Tb, m_Hemisphere); - validateMatrix(t_Rf, m_Hemisphere); - validateMatrix(t_Rb, m_Hemisphere); - m_Property[std::make_pair(FenestrationCommon::Property::T, - FenestrationCommon::Side::Front)] = t_Tf; - m_Property[std::make_pair(FenestrationCommon::Property::T, - FenestrationCommon::Side::Back)] = t_Tb; - m_Property[std::make_pair(FenestrationCommon::Property::R, - FenestrationCommon::Side::Front)] = t_Rf; - m_Property[std::make_pair(FenestrationCommon::Property::R, - FenestrationCommon::Side::Back)] = t_Rb; - m_Wavelengths = calculateBandWavelengths(); - } - - CMaterialSingleBandBSDF::CMaterialSingleBandBSDF(std::vector> const & t_Tf, - std::vector> const & t_Tb, - std::vector> const & t_Rf, - std::vector> const & t_Rb, - BSDFHemisphere const & t_Hemisphere, - FenestrationCommon::WavelengthRange t_Range) : - CMaterial(t_Range), m_Hemisphere(t_Hemisphere) + BSDFHemisphere const & t_Hemisphere) : + CMaterial(ConstantsData::MINLAMBDAVALUE, ConstantsData::MAXLAMBDAVALUE), + m_Hemisphere(t_Hemisphere) { validateMatrix(t_Tf, m_Hemisphere); validateMatrix(t_Tb, m_Hemisphere); @@ -858,10 +662,7 @@ namespace SingleLayerOptics std::vector CMaterialSingleBandBSDF::calculateBandWavelengths() { - std::vector aWavelengths; - aWavelengths.push_back(m_MinLambda); - aWavelengths.push_back(m_MaxLambda); - return aWavelengths; + return {m_MinLambda, m_MaxLambda}; } void CMaterialSingleBandBSDF::validateMatrix(std::vector> const & matrix, @@ -907,14 +708,10 @@ namespace SingleLayerOptics const std::shared_ptr & t_FullRange, const double t_Fraction) { - auto materials = SingleLayerOptics::createNIRRange( + m_MaterialScaledRange = SingleLayerOptics::createNIRRange( std::dynamic_pointer_cast(t_PartialRange), std::dynamic_pointer_cast(t_FullRange), t_Fraction); - for(auto & material : materials) - { - m_Materials.push_back(material); - } } } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/MaterialDescription.hpp b/src/SingleLayerOptics/src/MaterialDescription.hpp index c35e9268..58a6d3c3 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.hpp +++ b/src/SingleLayerOptics/src/MaterialDescription.hpp @@ -57,7 +57,7 @@ namespace SingleLayerOptics { public: CMaterial(double minLambda, double maxLambda); - explicit CMaterial(FenestrationCommon::WavelengthRange t_Range); + explicit CMaterial(FenestrationCommon::Limits wavelengthRange); virtual void setSourceData(FenestrationCommon::CSeries &); virtual void setDetectorData(FenestrationCommon::CSeries & t_DetectorData); @@ -104,7 +104,7 @@ namespace SingleLayerOptics std::vector trimWavelengthToRange(const std::vector & wavelengths) const; // Set state in order not to calculate wavelengths every time virtual std::vector calculateBandWavelengths() = 0; - bool m_WavelengthsCalculated; + bool m_WavelengthsCalculated{false}; std::vector m_Wavelengths; }; @@ -118,13 +118,7 @@ namespace SingleLayerOptics class CMaterialSingleBand : public CMaterial { public: - CMaterialSingleBand( - double t_Tf, double t_Tb, double t_Rf, double t_Rb, double minLambda, double maxLambda); - CMaterialSingleBand(double t_Tf, - double t_Tb, - double t_Rf, - double t_Rb, - FenestrationCommon::WavelengthRange t_Range); + CMaterialSingleBand(double t_Tf, double t_Tb, double t_Rf, double t_Rb); double getProperty(FenestrationCommon::Property t_Property, @@ -159,15 +153,7 @@ namespace SingleLayerOptics std::vector> const & t_Tb, std::vector> const & t_Rf, std::vector> const & t_Rb, - BSDFHemisphere const & t_Hemisphere, - double minLambda, - double maxLambda); - CMaterialSingleBandBSDF(std::vector> const & t_Tf, - std::vector> const & t_Tb, - std::vector> const & t_Rf, - std::vector> const & t_Rb, - BSDFHemisphere const & t_Hemisphere, - FenestrationCommon::WavelengthRange t_Range); + BSDFHemisphere const & t_Hemisphere); double getProperty(FenestrationCommon::Property t_Property, @@ -211,13 +197,13 @@ namespace SingleLayerOptics class IMaterialDualBand : public CMaterial { public: - IMaterialDualBand(const std::shared_ptr & t_PartialRange, - const std::shared_ptr & t_FullRange, + IMaterialDualBand(const std::shared_ptr & visibleRange, + const std::shared_ptr & solarRange, double t_Ratio = ConstantsData::NIRRatio); // ratio is calculated based on provided solar radiation values - IMaterialDualBand(const std::shared_ptr & t_PartialRange, - const std::shared_ptr & t_FullRange, + IMaterialDualBand(const std::shared_ptr & visibleRange, + const std::shared_ptr & solarRange, const FenestrationCommon::CSeries & t_SolarRadiation); void setSourceData(FenestrationCommon::CSeries & t_SourceData) override; @@ -237,9 +223,6 @@ namespace SingleLayerOptics protected: std::vector calculateBandWavelengths() override; - // Checks if material is within valid range. Otherwise, algorithm is not valid. - static void checkIfMaterialWithingSolarRange(const CMaterial & t_Material) ; - void createUVRange(); // Creates after UV range and stores data into m_Materials virtual void createNIRRange(const std::shared_ptr & t_PartialRange, @@ -261,12 +244,14 @@ namespace SingleLayerOptics [[nodiscard]] std::shared_ptr getMaterialFromWavelegth(double wavelength) const; - std::shared_ptr m_MaterialFullRange; - std::shared_ptr m_MaterialPartialRange; + std::shared_ptr m_MaterialSolarRange; + std::shared_ptr m_MaterialVisibleRange; + + + std::shared_ptr m_MaterialScaledRange; std::function m_RangeCreator; - std::vector> m_Materials; }; class CMaterialDualBand : public IMaterialDualBand @@ -332,18 +317,11 @@ namespace SingleLayerOptics class CMaterialSample : public CMaterial { public: - CMaterialSample( - const std::shared_ptr & t_SpectralSample, - double t_Thickness, - FenestrationCommon::MaterialType t_Type, - double minLambda, - double maxLambda); CMaterialSample( const std::shared_ptr & t_SpectralSample, double t_Thickness, - FenestrationCommon::MaterialType t_Type, - FenestrationCommon::WavelengthRange t_Range); + FenestrationCommon::MaterialType t_Type); void setSourceData(FenestrationCommon::CSeries & t_SourceData) override; void setDetectorData(FenestrationCommon::CSeries & t_DetectorData) override; @@ -381,15 +359,7 @@ namespace SingleLayerOptics CMaterialPhotovoltaicSample( const std::shared_ptr & t_SpectralSample, double t_Thickness, - FenestrationCommon::MaterialType t_Type, - double minLambda, - double maxLambda); - - CMaterialPhotovoltaicSample( - const std::shared_ptr & t_SpectralSample, - double t_Thickness, - FenestrationCommon::MaterialType t_Type, - FenestrationCommon::WavelengthRange t_Range); + FenestrationCommon::MaterialType t_Type); [[nodiscard]] FenestrationCommon::CSeries jscPrime(FenestrationCommon::Side t_Side) const override; @@ -407,14 +377,9 @@ namespace SingleLayerOptics class CMaterialMeasured : public CMaterial { public: - CMaterialMeasured( - const std::shared_ptr & t_Measurements, - double minLambda, - double maxLambda); CMaterialMeasured( - const std::shared_ptr & t_Measurements, - FenestrationCommon::WavelengthRange t_Range); + const std::shared_ptr & t_Measurements); void setSourceData(FenestrationCommon::CSeries & t_SourceData) override; diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp index dd50e147..552b37cc 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp @@ -97,8 +97,7 @@ class TestBSDFMaterialDualBand : public testing::Test m_TbVis, m_RfVis, m_RbVis, - m_Hemisphere, - FenestrationCommon::WavelengthRange::Visible); + m_Hemisphere); m_TfSol = loadTfSol(); m_TbSol = m_TfSol; m_RfSol = loadRfSol(); @@ -108,8 +107,7 @@ class TestBSDFMaterialDualBand : public testing::Test m_TbSol, m_RfSol, m_RbSol, - m_Hemisphere, - FenestrationCommon::WavelengthRange::Solar); + m_Hemisphere); m_Material = std::make_shared(m_MaterialVis, m_MaterialSol); } }; diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp index b27d7adb..ace6b5c3 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBandCondensedRange.unit.cpp @@ -120,8 +120,7 @@ class TestBSDFMaterialDualBandCondensedRange : public testing::Test m_TbVis, m_RfVis, m_RbVis, - m_Hemisphere, - FenestrationCommon::WavelengthRange::Visible); + m_Hemisphere); m_TfSol = loadTfSol(); m_TbSol = m_TfSol; m_RfSol = loadRfSol(); @@ -131,8 +130,7 @@ class TestBSDFMaterialDualBandCondensedRange : public testing::Test m_TbSol, m_RfSol, m_RbSol, - m_Hemisphere, - FenestrationCommon::WavelengthRange::Solar); + m_Hemisphere); m_Material = std::make_shared(m_MaterialVis, m_MaterialSol); m_Material->setBandWavelengths(condensedSpectrum()); diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp index 8fad634a..0c829688 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp @@ -59,7 +59,7 @@ class TestBSDFMaterialSingleBand : public testing::Test m_Rf = loadRf(); m_Rb = m_Rf; m_Material = std::make_shared( - m_Tf, m_Tb, m_Rf, m_Rb, m_Hemisphere, FenestrationCommon::WavelengthRange::Solar); + m_Tf, m_Tb, m_Rf, m_Rb, m_Hemisphere); } }; diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedCell.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedCell.unit.cpp index 9e588ac8..54bbec8c 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedCell.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedCell.unit.cpp @@ -21,10 +21,7 @@ class TestCircularPerforatedCell : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.8; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto x = 10; // mm diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp index e8937ba8..8491d9cb 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp @@ -20,10 +20,7 @@ class TestCircularPerforatedShade1 : public testing::Test const auto Tmat = 0.2; const auto Rfmat = 0.75; const auto Rbmat = 0.66; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto x = 0.0225; // m diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp index 71fdcee4..8a2a9771 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade2.unit.cpp @@ -20,10 +20,7 @@ class TestCircularPerforatedShade2 : public testing::Test const auto Tmat = 0.2; const auto Rfmat = 0.8; const auto Rbmat = 0.8; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto x = 0.0225; // m diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp index c8878801..8cbb2b85 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShadeNFRC18000.unit.cpp @@ -22,10 +22,7 @@ class TestCircularPerforatedShadeNFRC18000 : public testing::Test const auto Tmat = 0.0; const auto Rfmat = 0.137; const auto Rbmat = 0.16; - const auto minLambda = 5.0; - const auto maxLambda = 100.0; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto thickness_31111{0.00023}; diff --git a/src/SingleLayerOptics/tst/units/NFRC_102ScatteringLayer1.unit.cpp b/src/SingleLayerOptics/tst/units/NFRC_102ScatteringLayer1.unit.cpp index fe12fd6f..d037b780 100644 --- a/src/SingleLayerOptics/tst/units/NFRC_102ScatteringLayer1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/NFRC_102ScatteringLayer1.unit.cpp @@ -119,8 +119,8 @@ class TestNFRC102ScatteringLayer1 : public testing::Test const auto aMeasurements = loadSampleData_NFRC_102(); const auto thickness = 3.048e-3; // [m] - const auto aMaterial = Material::nBandMaterial( - aMeasurements, thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial = + Material::nBandMaterial(aMeasurements, thickness, MaterialType::Monolithic); m_Layer = CScatteringLayer::createSpecularLayer(aMaterial); CSeries solarRadiation{loadSolarRadiationFile()}; diff --git a/src/SingleLayerOptics/tst/units/NFRC_102ScatteringLayer1_PHOTOPIC.unit.cpp b/src/SingleLayerOptics/tst/units/NFRC_102ScatteringLayer1_PHOTOPIC.unit.cpp index b586c60b..123e0970 100644 --- a/src/SingleLayerOptics/tst/units/NFRC_102ScatteringLayer1_PHOTOPIC.unit.cpp +++ b/src/SingleLayerOptics/tst/units/NFRC_102ScatteringLayer1_PHOTOPIC.unit.cpp @@ -257,8 +257,7 @@ class TestNFRC102ScatteringLayer1_PHOTOPIC : public testing::Test const auto aMaterial = Material::nBandMaterial(loadSampleData_NFRC_102(), loadDetectorData(), thickness, - MaterialType::Monolithic, - WavelengthRange::Visible); + MaterialType::Monolithic); m_Layer = CScatteringLayer::createSpecularLayer(aMaterial); CSeries solarRadiation{loadSolarRadiationFile()}; diff --git a/src/SingleLayerOptics/tst/units/NFRC_5439_SB70XL_Colors.unit.cpp b/src/SingleLayerOptics/tst/units/NFRC_5439_SB70XL_Colors.unit.cpp index 7ca2c9c8..5dc150f2 100644 --- a/src/SingleLayerOptics/tst/units/NFRC_5439_SB70XL_Colors.unit.cpp +++ b/src/SingleLayerOptics/tst/units/NFRC_5439_SB70XL_Colors.unit.cpp @@ -320,8 +320,7 @@ class TestNFRC_5439_SB70XL_Colors_Scattering : public testing::Test SingleLayerOptics::Material::nBandMaterial(loadSampleData_NFRC_5439(), astmStandard, thickness, - FenestrationCommon::MaterialType::Monolithic, - FenestrationCommon::WavelengthRange::Visible); + FenestrationCommon::MaterialType::Monolithic); auto layer = wce::make_unique( SingleLayerOptics::CScatteringLayer::createSpecularLayer(aMaterial)); diff --git a/src/SingleLayerOptics/tst/units/NFRC_VE348ScatteringLayer1.unit.cpp b/src/SingleLayerOptics/tst/units/NFRC_VE348ScatteringLayer1.unit.cpp index 91ff89c9..ec101037 100644 --- a/src/SingleLayerOptics/tst/units/NFRC_VE348ScatteringLayer1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/NFRC_VE348ScatteringLayer1.unit.cpp @@ -239,11 +239,8 @@ class TestVE345ScatteringLayer1 : public testing::Test virtual void SetUp() { double thickness = 5.66e-3; // [m] - const auto aMaterial = Material::nBandMaterial(loadSampleData_NFRC_VE348(), - thickness, - MaterialType::Coated, - WavelengthRange::Solar, - IntegrationType::PreWeighted); + const auto aMaterial = + Material::nBandMaterial(loadSampleData_NFRC_VE348(), thickness, MaterialType::Coated); m_Layer = CScatteringLayer::createSpecularLayer(aMaterial); CSeries solarRadiation{loadSolarRadiationFile()}; @@ -271,11 +268,11 @@ TEST_F(TestVE345ScatteringLayer1, TestFront) double T_dir_dir = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::T, aSide, Scattering::DirectDirect); - EXPECT_NEAR(0.218448, T_dir_dir, 1e-6); + EXPECT_NEAR(0.18859183654544612, T_dir_dir, 1e-6); double R_dir_dir = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::R, aSide, Scattering::DirectDirect); - EXPECT_NEAR(0.101591, R_dir_dir, 1e-6); + EXPECT_NEAR(0.12316443596123823, R_dir_dir, 1e-6); double T_dir_dif = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::T, aSide, Scattering::DirectDiffuse); @@ -287,17 +284,17 @@ TEST_F(TestVE345ScatteringLayer1, TestFront) double T_dif_dif = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::T, aSide, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.191069, T_dif_dif, 1e-6); + EXPECT_NEAR(0.1649548166166081, T_dif_dif, 1e-6); double R_dif_dif = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::R, aSide, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.159037, R_dif_dif, 1e-6); + EXPECT_NEAR(0.17923022308583067, R_dif_dif, 1e-6); double A_dir = aLayer.getAbsorptance(aSide, ScatteringSimple::Direct); - EXPECT_NEAR(0.679960, A_dir, 1e-6); + EXPECT_NEAR(0.68824372749331564, A_dir, 1e-6); double A_dif = aLayer.getAbsorptance(aSide, ScatteringSimple::Diffuse); - EXPECT_NEAR(0.649894, A_dif, 1e-6); + EXPECT_NEAR(0.65581496029756114, A_dif, 1e-6); } TEST_F(TestVE345ScatteringLayer1, TestBack) @@ -313,11 +310,11 @@ TEST_F(TestVE345ScatteringLayer1, TestBack) double T_dir_dir = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::T, aSide, Scattering::DirectDirect); - EXPECT_NEAR(0.218448, T_dir_dir, 1e-6); + EXPECT_NEAR(0.18859183654544612, T_dir_dir, 1e-6); double R_dir_dir = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::R, aSide, Scattering::DirectDirect); - EXPECT_NEAR(0.190456, R_dir_dir, 1e-6); + EXPECT_NEAR(0.28243131539495842, R_dir_dir, 1e-6); double T_dir_dif = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::T, aSide, Scattering::DirectDiffuse); @@ -329,15 +326,15 @@ TEST_F(TestVE345ScatteringLayer1, TestBack) double T_dif_dif = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::T, aSide, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.191069, T_dif_dif, 1e-6); + EXPECT_NEAR(0.1649548166166081, T_dif_dif, 1e-6); double R_dif_dif = aLayer.getPropertySimple( minLambda, maxLambda, PropertySimple::R, aSide, Scattering::DiffuseDiffuse); - EXPECT_NEAR(0.242219, R_dif_dif, 1e-6); + EXPECT_NEAR(0.3283134109306744, R_dif_dif, 1e-6); double A_dir = aLayer.getAbsorptance(aSide, ScatteringSimple::Direct); - EXPECT_NEAR(0.591096, A_dir, 1e-6); + EXPECT_NEAR(0.52897684805959555, A_dir, 1e-6); double A_dif = aLayer.getAbsorptance(aSide, ScatteringSimple::Diffuse); - EXPECT_NEAR(0.566712, A_dif, 1e-6); + EXPECT_NEAR(0.50673177245271739, A_dif, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/NFRC_VE348ScatteringLayer_IR_Range.unit.cpp b/src/SingleLayerOptics/tst/units/NFRC_VE348ScatteringLayer_IR_Range.unit.cpp index fb74ead7..fe9bb0e3 100644 --- a/src/SingleLayerOptics/tst/units/NFRC_VE348ScatteringLayer_IR_Range.unit.cpp +++ b/src/SingleLayerOptics/tst/units/NFRC_VE348ScatteringLayer_IR_Range.unit.cpp @@ -175,11 +175,8 @@ class TestVE345ScatteringLayer_IR_Range : public testing::Test virtual void SetUp() { const double thickness = 5.66e-3; // [m] - const auto aMaterial = Material::nBandMaterial(loadSampleData_NFRC_VE348(), - thickness, - MaterialType::Coated, - WavelengthRange::IR, - IntegrationType::Trapezoidal); + const auto aMaterial = + Material::nBandMaterial(loadSampleData_NFRC_VE348(), thickness, MaterialType::Coated); const double blackBodyTemperature = 300; m_Layer = CScatteringLayer::createSpecularLayer(aMaterial); diff --git a/src/SingleLayerOptics/tst/units/PerfectDiffuseCell1.unit.cpp b/src/SingleLayerOptics/tst/units/PerfectDiffuseCell1.unit.cpp index 80006cb0..618fbcb6 100644 --- a/src/SingleLayerOptics/tst/units/PerfectDiffuseCell1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/PerfectDiffuseCell1.unit.cpp @@ -20,10 +20,7 @@ class TestPerfectDiffuseCell1 : public testing::Test const auto Tmat = 0.00; const auto Rfmat = 0.55; const auto Rbmat = 0.55; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry std::shared_ptr aCell = std::make_shared(); diff --git a/src/SingleLayerOptics/tst/units/PerfectDiffuseCell2.unit.cpp b/src/SingleLayerOptics/tst/units/PerfectDiffuseCell2.unit.cpp index c79d0941..c3f11120 100644 --- a/src/SingleLayerOptics/tst/units/PerfectDiffuseCell2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/PerfectDiffuseCell2.unit.cpp @@ -20,10 +20,7 @@ class TestPerfectDiffuseCell2 : public testing::Test const auto Tmat = 0.24; const auto Rfmat = 0.55; const auto Rbmat = 0.55; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry std::shared_ptr aCell = std::make_shared(); diff --git a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp index 7174d6e6..dc19b60c 100644 --- a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp @@ -20,10 +20,7 @@ class TestPerfectDiffuseShade1 : public testing::Test double Tmat = 0.00; double Rfmat = 0.55; double Rbmat = 0.55; - double minLambda = 0.3; - double maxLambda = 2.5; - auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedCell.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedCell.unit.cpp index 9150456c..8eaa353b 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedCell.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedCell.unit.cpp @@ -21,10 +21,7 @@ class TestRectangularPerforatedCell : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.8; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto x = 10; // mm diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedScatteringShade1.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedScatteringShade1.unit.cpp index c9160dec..2012c82b 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedScatteringShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedScatteringShade1.unit.cpp @@ -25,8 +25,7 @@ TEST_F(TestRectangularPerforatedScatteringShade1, TestProperties) const auto Rbmat = 0.4; const auto minLambda = 0.3; const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto x = 20.0; // mm @@ -63,8 +62,7 @@ TEST_F(TestRectangularPerforatedScatteringShade1, TestHighEmissivity) const auto Rbmat = 0.01; const auto minLambda = 0.3; const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto x = 20.0; // mm diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp index 89ac83fc..603993ca 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp @@ -20,10 +20,7 @@ class TestRectangularPerforatedShade1 : public testing::Test const auto Tmat = 0.0; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto x = 19.05; // mm diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp index 00941a8d..5d82d2c8 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade2.unit.cpp @@ -20,10 +20,7 @@ class TestRectangularPerforatedShade2 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.5; const auto Rbmat = 0.6; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto x = 20.0; // mm diff --git a/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp b/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp index 9156cfa9..f476c96b 100644 --- a/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SinglePaneBSDF_VenetianIR.unit.cpp @@ -63,10 +63,8 @@ class SinglePaneBSDF_VenetianIR : public testing::Test const auto Rb = 0.1; - const auto aMaterialVenetian = SingleLayerOptics::Material::singleBandMaterial( - Tf, Tb, Rf, Rb, FenestrationCommon::WavelengthRange::IR); - - aMaterialVenetian->setBandWavelengths(commonWavelengths); + const auto aMaterialVenetian = + SingleLayerOptics::Material::singleBandMaterial(Tf, Tb, Rf, Rb); // make cell geometry const auto slatWidth = 0.0148; // m diff --git a/src/SingleLayerOptics/tst/units/SpecularAngularLayerProperty_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularAngularLayerProperty_102.unit.cpp index 3ddc70b5..4f3ece44 100644 --- a/src/SingleLayerOptics/tst/units/SpecularAngularLayerProperty_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularAngularLayerProperty_102.unit.cpp @@ -535,8 +535,7 @@ class TestSpecularAngularLayerProperty_102 : public testing::Test m_Measurements->addMeasurement(aAngular4); m_Measurements->addMeasurement(aAngular9); - std::shared_ptr aMaterial = - std::make_shared(m_Measurements, WavelengthRange::Solar); + std::shared_ptr aMaterial = std::make_shared(m_Measurements); m_Material = aMaterial; } @@ -592,109 +591,4 @@ TEST_F(TestSpecularAngularLayerProperty_102, TestSpecularAngular25degree) EXPECT_NEAR(0.79636496475913876, trans, 1e-6); EXPECT_NEAR(0.11405492103460167, refleF, 1e-6); EXPECT_NEAR(0.11405492103460167, refleB, 1e-6); - - std::vector correctT; - correctT.push_back(0); - correctT.push_back(0); - correctT.push_back(0.00455); - correctT.push_back(0.0252); - correctT.push_back(0.0757); - correctT.push_back(0.1736); - correctT.push_back(0.30255); - correctT.push_back(0.43405); - correctT.push_back(0.55215); - correctT.push_back(0.6511); - correctT.push_back(0.718); - correctT.push_back(0.76295); - correctT.push_back(0.7951); - correctT.push_back(0.81515); - correctT.push_back(0.82125); - correctT.push_back(0.8206); - correctT.push_back(0.80825); - correctT.push_back(0.8231); - correctT.push_back(0.83445); - correctT.push_back(0.84285); - correctT.push_back(0.84705); - correctT.push_back(0.84925); - correctT.push_back(0.8467); - correctT.push_back(0.846); - correctT.push_back(0.8441); - correctT.push_back(0.84795); - correctT.push_back(0.8522); - correctT.push_back(0.8541); - correctT.push_back(0.8564); - correctT.push_back(0.85785); - correctT.push_back(0.85785); - correctT.push_back(0.8584); - correctT.push_back(0.85775); - correctT.push_back(0.8581); - correctT.push_back(0.8586); - correctT.push_back(0.8564); - correctT.push_back(0.855); - correctT.push_back(0.85365); - correctT.push_back(0.8525); - correctT.push_back(0.8486); - correctT.push_back(0.8465); - correctT.push_back(0.84555); - correctT.push_back(0.8395); - correctT.push_back(0.8379); - correctT.push_back(0.83455); - correctT.push_back(0.8307); - correctT.push_back(0.8271); - correctT.push_back(0.8267); - correctT.push_back(0.81975); - correctT.push_back(0.81675); - correctT.push_back(0.8136); - correctT.push_back(0.8083); - correctT.push_back(0.80565); - correctT.push_back(0.80095); - correctT.push_back(0.79375); - correctT.push_back(0.7925); - correctT.push_back(0.7874); - correctT.push_back(0.78565); - correctT.push_back(0.78385); - correctT.push_back(0.7742); - correctT.push_back(0.77575); - correctT.push_back(0.75795); - correctT.push_back(0.75015); - correctT.push_back(0.7403); - correctT.push_back(0.7356); - correctT.push_back(0.73425); - correctT.push_back(0.7341); - correctT.push_back(0.7358); - correctT.push_back(0.7389); - correctT.push_back(0.7441); - correctT.push_back(0.75135); - correctT.push_back(0.7591); - correctT.push_back(0.7675); - correctT.push_back(0.77725); - correctT.push_back(0.7882); - correctT.push_back(0.7964); - correctT.push_back(0.8029); - correctT.push_back(0.8054); - correctT.push_back(0.8051); - correctT.push_back(0.8056); - correctT.push_back(0.80265); - correctT.push_back(0.801); - correctT.push_back(0.80465); - correctT.push_back(0.8019); - correctT.push_back(0.80015); - correctT.push_back(0.80095); - correctT.push_back(0.80275); - correctT.push_back(0.79255); - correctT.push_back(0.78165); - correctT.push_back(0.7788); - correctT.push_back(0.78155); - correctT.push_back(0.7854); - correctT.push_back(0.77455); - correctT.push_back(0.7733); - correctT.push_back(0.76895); - - size_t size = aTrans.size(); - - EXPECT_EQ(size, correctT.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctT[i], aTrans[i], 1e-6); - } } diff --git a/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp index 7fd57e02..e6885194 100644 --- a/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularAngularLayer_102.unit.cpp @@ -651,7 +651,7 @@ class TestSpecularAngularLayer_102 : public testing::Test // m_Measurements->addMeasurement( aAngular09 ); std::shared_ptr aMaterial = - std::make_shared(m_Measurements, WavelengthRange::Solar); + std::make_shared(m_Measurements); // create BSDF const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); diff --git a/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp index 08ff34b7..a2d994e4 100644 --- a/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularBSDFLayer_SingleBandMaterial.unit.cpp @@ -58,11 +58,7 @@ class TestSpecularBSDFLayer_SingleBandMaterial : public testing::Test const auto Rfsol = 0.05; const auto Rbsol = 0.05; - const auto minLambda{0.3}; - const auto maxLambda{2.5}; - - auto aMaterial{ - Material::singleBandMaterial(Tsol, Tsol, Rfsol, Rbsol, minLambda, maxLambda)}; + auto aMaterial{Material::singleBandMaterial(Tsol, Tsol, Rfsol, Rbsol)}; // Define BSDF const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp index 1c8b14c0..2457bc7b 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayerMultiWavelength_102.unit.cpp @@ -31,11 +31,8 @@ class TestSpecularLayerMultiWavelength_102 : public testing::Test const auto thickness = 3.048e-3; // [m] const MaterialType aType = MaterialType::Monolithic; - // WavelengthRange aRange = WavelengthRange::Solar; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::nBandMaterial(aMeasurements, thickness, aType, minLambda, maxLambda); + + const auto aMaterial = Material::nBandMaterial(aMeasurements, thickness, aType); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp index 3c7dc8c0..beefa6cb 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp @@ -117,8 +117,8 @@ class TestSpecularLayer_102 : public testing::Test virtual void SetUp() { const auto thickness = 3.048e-3; // [m] - const auto aMaterial = Material::nBandMaterial( - loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + const auto aMaterial = + Material::nBandMaterial(loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); // create BSDF const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp index e559fdc4..b2b3111d 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_103.unit.cpp @@ -117,8 +117,8 @@ class TestSpecularLayer_103 : public testing::Test virtual void SetUp() { const auto thickness = 5.715e-3; // [m] - auto aMaterial = Material::nBandMaterial( - loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic, WavelengthRange::Solar); + auto aMaterial = + Material::nBandMaterial(loadSampleData_NFRC_103(), thickness, MaterialType::Monolithic); // Define BSDF const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp index 205da9f2..a21b016a 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_1042.unit.cpp @@ -308,10 +308,12 @@ class TestSpecularLayer_1042 : public testing::Test virtual void SetUp() { double thickness = 3.18e-3; // [m] - auto aMaterial = Material::nBandMaterial( - loadSampleData_NFRC_1042(), thickness, MaterialType::Coated, WavelengthRange::Solar); + auto aMaterial = + Material::nBandMaterial(loadSampleData_NFRC_1042(), thickness, MaterialType::Coated); const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); + aMaterial->setBandWavelengths(loadSolarRadiationFile().getXArray()); + // make layer m_Layer = CBSDFLayerMaker::getSpecularLayer(aMaterial, aBSDF); CSeries solarRadiation{loadSolarRadiationFile()}; @@ -334,115 +336,17 @@ TEST_F(TestSpecularLayer_1042, TestSpecular1) auto aResults = aLayer->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); - EXPECT_NEAR(0.3950293, tauDiff, 1e-6); + EXPECT_NEAR(0.38969308651817641, tauDiff, 1e-6); const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); - EXPECT_NEAR(0.4002210, RfDiff, 1e-6); + EXPECT_NEAR(0.39697550370449242, RfDiff, 1e-6); const double theta = 37; const double phi = 59; const double tauHem = aResults.DirHem(Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.4334180, tauHem, 1e-6); + EXPECT_NEAR(0.42756321138709952, tauHem, 1e-6); const double tauDir = aResults.DirDir(Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.4334180, tauDir, 1e-6); - - auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); - - // Test only diagonal of transmittance matrix - size_t size = aT.size(); - - std::vector correctResults{ - 18.925409949756755, 19.492155615218532, 19.492155615218532, 19.492155615218532, - 19.492155615218532, 19.492155615218532, 19.492155615218532, 19.492155615218532, - 19.492155615218532, 20.478499169728025, 20.478499169728025, 20.478499169728025, - 20.478499169728025, 20.478499169728025, 20.478499169728025, 20.478499169728025, - 20.478499169728025, 20.478499169728025, 20.478499169728025, 20.478499169728025, - 20.478499169728025, 20.478499169728025, 20.478499169728025, 20.478499169728025, - 20.478499169728025, 18.700960433723210, 18.700960433723210, 18.700960433723210, - 18.700960433723210, 18.700960433723210, 18.700960433723210, 18.700960433723210, - 18.700960433723210, 18.700960433723210, 18.700960433723210, 18.700960433723210, - 18.700960433723210, 18.700960433723210, 18.700960433723210, 18.700960433723210, - 18.700960433723210, 18.700960433723210, 18.700960433723210, 18.700960433723210, - 18.700960433723210, 19.361839058956466, 19.361839058956466, 19.361839058956466, - 19.361839058956466, 19.361839058956466, 19.361839058956466, 19.361839058956466, - 19.361839058956466, 19.361839058956466, 19.361839058956466, 19.361839058956466, - 19.361839058956466, 19.361839058956466, 19.361839058956466, 19.361839058956466, - 19.361839058956466, 19.361839058956466, 19.361839058956466, 19.361839058956466, - 19.361839058956466, 19.361839058956466, 19.361839058956466, 19.361839058956466, - 19.361839058956466, 18.682016172835525, 18.682016172835525, 18.682016172835525, - 18.682016172835525, 18.682016172835525, 18.682016172835525, 18.682016172835525, - 18.682016172835525, 18.682016172835525, 18.682016172835525, 18.682016172835525, - 18.682016172835525, 18.682016172835525, 18.682016172835525, 18.682016172835525, - 18.682016172835525, 18.682016172835525, 18.682016172835525, 18.682016172835525, - 18.682016172835525, 18.682016172835525, 18.682016172835525, 18.682016172835525, - 18.682016172835525, 19.490682697458514, 19.490682697458514, 19.490682697458514, - 19.490682697458514, 19.490682697458514, 19.490682697458514, 19.490682697458514, - 19.490682697458514, 19.490682697458514, 19.490682697458514, 19.490682697458514, - 19.490682697458514, 19.490682697458514, 19.490682697458514, 19.490682697458514, - 19.490682697458514, 19.490682697458514, 19.490682697458514, 19.490682697458514, - 19.490682697458514, 19.490682697458514, 19.490682697458514, 19.490682697458514, - 19.490682697458514, 14.263576548142789, 14.263576548142789, 14.263576548142789, - 14.263576548142789, 14.263576548142789, 14.263576548142789, 14.263576548142789, - 14.263576548142789, 14.263576548142789, 14.263576548142789, 14.263576548142789, - 14.263576548142789, 14.263576548142789, 14.263576548142789, 14.263576548142789, - 14.263576548142789, 8.3782651420238139, 8.3782651420238139, 8.3782651420238139, - 8.3782651420238139, 8.3782651420238139, 8.3782651420238139, 8.3782651420238139, - 8.3782651420238139, 8.3782651420238139, 8.3782651420238139, 8.3782651420238139, - 8.3782651420238139}; - - EXPECT_EQ(correctResults.size(), aT.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aT(i, i), 1e-6); - } - - // Back reflectance - auto aRb = aResults.getMatrix(Side::Back, PropertySimple::R); - - correctResults = { - 16.633681391213987, 16.806064754975282, 16.806064754975282, 16.806064754975282, - 16.806064754975282, 16.806064754975282, 16.806064754975282, 16.806064754975282, - 16.806064754975282, 17.836700597426397, 17.836700597426397, 17.836700597426397, - 17.836700597426397, 17.836700597426397, 17.836700597426397, 17.836700597426397, - 17.836700597426397, 17.836700597426397, 17.836700597426397, 17.836700597426397, - 17.836700597426397, 17.836700597426397, 17.836700597426397, 17.836700597426397, - 17.836700597426397, 16.636056346887674, 16.636056346887674, 16.636056346887674, - 16.636056346887674, 16.636056346887674, 16.636056346887674, 16.636056346887674, - 16.636056346887674, 16.636056346887674, 16.636056346887674, 16.636056346887674, - 16.636056346887674, 16.636056346887674, 16.636056346887674, 16.636056346887674, - 16.636056346887674, 16.636056346887674, 16.636056346887674, 16.636056346887674, - 16.636056346887674, 17.858769985238638, 17.858769985238638, 17.858769985238638, - 17.858769985238638, 17.858769985238638, 17.858769985238638, 17.858769985238638, - 17.858769985238638, 17.858769985238638, 17.858769985238638, 17.858769985238638, - 17.858769985238638, 17.858769985238638, 17.858769985238638, 17.858769985238638, - 17.858769985238638, 17.858769985238638, 17.858769985238638, 17.858769985238638, - 17.858769985238638, 17.858769985238638, 17.858769985238638, 17.858769985238638, - 17.858769985238638, 18.374937331002442, 18.374937331002442, 18.374937331002442, - 18.374937331002442, 18.374937331002442, 18.374937331002442, 18.374937331002442, - 18.374937331002442, 18.374937331002442, 18.374937331002442, 18.374937331002442, - 18.374937331002442, 18.374937331002442, 18.374937331002442, 18.374937331002442, - 18.374937331002442, 18.374937331002442, 18.374937331002442, 18.374937331002442, - 18.374937331002442, 18.374937331002442, 18.374937331002442, 18.374937331002442, - 18.374937331002442, 22.019027128361856, 22.019027128361856, 22.019027128361856, - 22.019027128361856, 22.019027128361856, 22.019027128361856, 22.019027128361856, - 22.019027128361856, 22.019027128361856, 22.019027128361856, 22.019027128361856, - 22.019027128361856, 22.019027128361856, 22.019027128361856, 22.019027128361856, - 22.019027128361856, 22.019027128361856, 22.019027128361856, 22.019027128361856, - 22.019027128361856, 22.019027128361856, 22.019027128361856, 22.019027128361856, - 22.019027128361856, 22.442909673951512, 22.442909673951512, 22.442909673951512, - 22.442909673951512, 22.442909673951512, 22.442909673951512, 22.442909673951512, - 22.442909673951512, 22.442909673951512, 22.442909673951512, 22.442909673951512, - 22.442909673951512, 22.442909673951512, 22.442909673951512, 22.442909673951512, - 22.442909673951512, 40.593409716660105, 40.593409716660105, 40.593409716660105, - 40.593409716660105, 40.593409716660105, 40.593409716660105, 40.593409716660105, - 40.593409716660105, 40.593409716660105, 40.593409716660105, 40.593409716660105, - 40.593409716660105}; - - EXPECT_EQ(correctResults.size(), aRb.size()); - for(size_t i = 0; i < size; ++i) - { - EXPECT_NEAR(correctResults[i], aRb(i, i), 1e-6); - } + EXPECT_NEAR(0.42756321138709952, tauDir, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/VenetianCellCurved55_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellCurved55_1.unit.cpp index c96169cf..b371a878 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellCurved55_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellCurved55_1.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellCurved55_1 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.076200; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianCellCurved55_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellCurved55_2.unit.cpp index f369cbff..6863b34b 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellCurved55_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellCurved55_2.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellCurved55_2 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.3; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.076200; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianCellCurvedMinus55_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellCurvedMinus55_1.unit.cpp index beef8b45..ae5a2c7f 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellCurvedMinus55_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellCurvedMinus55_1.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellCurvedMinus55_1 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.076200; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianCellCurvedMinus55_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellCurvedMinus55_2.unit.cpp index baa6e9f2..ab5ee10f 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellCurvedMinus55_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellCurvedMinus55_2.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellCurvedMinus55_2 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.3; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.076200; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianCellFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellFlat0_1.unit.cpp index af18e31b..b3dc3dcc 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellFlat0_1.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellFlat0_1 : public testing::Test const auto Tmat = 0.9; const auto Rfmat = 0.0; const auto Rbmat = 0.0; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianCellFlat0_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellFlat0_2.unit.cpp index 18ef401e..99f64129 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellFlat0_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellFlat0_2.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellFlat0_2 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianCellFlat45_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellFlat45_1.unit.cpp index 18438caa..6ba37027 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellFlat45_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellFlat45_1.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellFlat45_1 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianCellFlat45_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellFlat45_2.unit.cpp index 50da778f..779b1cf5 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellFlat45_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellFlat45_2.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellFlat45_2 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.3; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianCellFlat45_3.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellFlat45_3.unit.cpp index 75bc8382..7c799fb5 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellFlat45_3.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellFlat45_3.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellFlat45_3 : public testing::Test const auto Tmat = 0.0; const auto Rfmat = 0.1; const auto Rbmat = 0.1; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianCellFlatMinus45_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellFlatMinus45_1.unit.cpp index cda2da45..f03174a5 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellFlatMinus45_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellFlatMinus45_1.unit.cpp @@ -21,10 +21,7 @@ class TestVenetianCellFlatMinus45_1 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianCellFlatMinus45_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianCellFlatMinus45_2.unit.cpp index 3df42c30..2251cc23 100644 --- a/src/SingleLayerOptics/tst/units/VenetianCellFlatMinus45_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianCellFlatMinus45_2.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianCellFlatMinus45_2 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.3; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp index 422d3bc8..c1a0b10f 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeCurvedMinus45_0.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianDirectionalShadeCurvedMinus45_0 : public testing::Test const auto Tmat = 0.0; const auto Rfmat = 0.95; const auto Rbmat = 0.95; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp index bc22010a..8cc70e83 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianDirectionalShadeFlat0_1 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp index b6e5dfb4..26f0c790 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_2.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianDirectionalShadeFlat0_2 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp index b0798dc8..765a1f01 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_3.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianDirectionalShadeFlat0_3 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.016; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp index 6fb29e96..690f7165 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat45_5.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianDirectionalShadeFlat45_5 : public testing::Test const auto Tmat = 0.2; const auto Rfmat = 0.6; const auto Rbmat = 0.6; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.016; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianScatteringLayer1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianScatteringLayer1.unit.cpp index 9ac6df58..efc3da4e 100644 --- a/src/SingleLayerOptics/tst/units/VenetianScatteringLayer1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianScatteringLayer1.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianScatteringLayer1 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp index 79bc326f..e5d0fad2 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus45_0.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianUniformShadeCurvedMinus45_0 : public testing::Test const auto Tmat = 0.0; const auto Rfmat = 0.95; const auto Rbmat = 0.95; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp index b74347d2..c21db36a 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedMinus55_0.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianUniformShadeCurvedMinus55_0 : public testing::Test const auto Tmat = 0.15; const auto Rfmat = 0.2; const auto Rbmat = 0.5; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp index cd833c3c..c6514710 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeCurvedZeroAngle_0.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianUniformShadeCurvedZeroAngle_0 : public testing::Test const auto Tmat = 0.0; const auto Rfmat = 0.1; const auto Rbmat = 0.1; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp index da2b1825..e57433e9 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp @@ -22,10 +22,7 @@ class TestVenetianUniformShadeFlat0_1 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp index ca539522..1a1b23f3 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_2.unit.cpp @@ -21,10 +21,7 @@ class TestVenetianUniformShadeFlat0_2 : public testing::Test const auto Tmat = 0.0; const auto Rfmat = 0.1; const auto Rbmat = 0.1; - const auto minLambda = 5.0; - const auto maxLambda = 40.0; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.016; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp index e57940ce..aabb147d 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat45_1.unit.cpp @@ -20,10 +20,7 @@ class TestVenetianUniformShadeFlat45_1 : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp index 536ebac3..5908f7ac 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeMatrix.unit.cpp @@ -16,10 +16,8 @@ class TestVenetianUniformShadeMatrix : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = SingleLayerOptics::Material::singleBandMaterial( - Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = + SingleLayerOptics::Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp index b0b3df8c..bada6d6b 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeVertical.unit.cpp @@ -16,10 +16,8 @@ class TestVenetianUniformShadeMatrixVertical : public testing::Test const auto Tmat = 0.1; const auto Rfmat = 0.7; const auto Rbmat = 0.7; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = SingleLayerOptics::Material::singleBandMaterial( - Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = + SingleLayerOptics::Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto slatWidth = 0.010; // m diff --git a/src/SingleLayerOptics/tst/units/WovenCell1.unit.cpp b/src/SingleLayerOptics/tst/units/WovenCell1.unit.cpp index 43d9b677..a859b697 100644 --- a/src/SingleLayerOptics/tst/units/WovenCell1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenCell1.unit.cpp @@ -20,10 +20,7 @@ class TestWovenCell1 : public testing::Test const auto Tmat = 0.08; const auto Rfmat = 0.9; const auto Rbmat = 0.9; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto diameter = 6.35; // mm diff --git a/src/SingleLayerOptics/tst/units/WovenCell2.unit.cpp b/src/SingleLayerOptics/tst/units/WovenCell2.unit.cpp index c889ad1a..a7b99232 100644 --- a/src/SingleLayerOptics/tst/units/WovenCell2.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenCell2.unit.cpp @@ -20,10 +20,7 @@ class TestWovenCell2 : public testing::Test const auto Tmat = 0.15; const auto Rfmat = 0.8; const auto Rbmat = 0.6; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto diameter = 6.35; // mm diff --git a/src/SingleLayerOptics/tst/units/WovenCell3.unit.cpp b/src/SingleLayerOptics/tst/units/WovenCell3.unit.cpp index cec78647..da150593 100644 --- a/src/SingleLayerOptics/tst/units/WovenCell3.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenCell3.unit.cpp @@ -20,10 +20,7 @@ class TestWovenCell3 : public testing::Test const auto Tmat = 0; const auto Rfmat = 0; const auto Rbmat = 0; - const auto minLambda = 0.3; - const auto maxLambda = 2.5; - const auto aMaterial = - Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto diameter = 6.35; // mm diff --git a/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp b/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp index 0ecd94b0..e3a7c277 100644 --- a/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenShadeUniformMaterial.unit.cpp @@ -20,10 +20,8 @@ class TestWovenShadeUniformMaterial : public testing::Test const auto Tmat = 0.0; const auto Rfmat = 0.1; const auto Rbmat = 0.1; - const auto minLambda = 5.0; - const auto maxLambda = 40.0; - const auto aMaterial = SingleLayerOptics::Material::singleBandMaterial( - Tmat, Tmat, Rfmat, Rbmat, minLambda, maxLambda); + const auto aMaterial = + SingleLayerOptics::Material::singleBandMaterial(Tmat, Tmat, Rfmat, Rbmat); // make cell geometry const auto diameter = 0.002; // m diff --git a/src/SpectralAveraging/src/AngularMeasurements.cpp b/src/SpectralAveraging/src/AngularMeasurements.cpp index 610ed6da..f53484f2 100644 --- a/src/SpectralAveraging/src/AngularMeasurements.cpp +++ b/src/SpectralAveraging/src/AngularMeasurements.cpp @@ -187,7 +187,7 @@ namespace SpectralAveraging } } - FenestrationCommon::Limits CAngularMeasurements::getWavelengtLimits() const + FenestrationCommon::Limits CAngularMeasurements::getWavelengthLimits() const { return {m_CommonWavelengths[0], m_CommonWavelengths[m_CommonWavelengths.size() - 1]}; } diff --git a/src/SpectralAveraging/src/AngularMeasurements.hpp b/src/SpectralAveraging/src/AngularMeasurements.hpp index cb875295..d1a46d87 100644 --- a/src/SpectralAveraging/src/AngularMeasurements.hpp +++ b/src/SpectralAveraging/src/AngularMeasurements.hpp @@ -62,7 +62,7 @@ namespace SpectralAveraging // t_Angle that does not exist.So this is where you want to do your interpolation work virtual void setSourceData(FenestrationCommon::CSeries & t_SourceData); - [[nodiscard]] FenestrationCommon::Limits getWavelengtLimits() const; + [[nodiscard]] FenestrationCommon::Limits getWavelengthLimits() const; private: // Do not forget storage for it From 22a9f8222aafd96d923e6de29500acae131f4664 Mon Sep 17 00:00:00 2001 From: vidanovic Date: Fri, 5 Aug 2022 16:40:49 -0700 Subject: [PATCH 52/81] Removed extra semicolumn (ubuntu warning) --- src/MultiLayerOptics/src/CalculationProperties.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MultiLayerOptics/src/CalculationProperties.hpp b/src/MultiLayerOptics/src/CalculationProperties.hpp index 9d1aeae1..c1a5fccf 100644 --- a/src/MultiLayerOptics/src/CalculationProperties.hpp +++ b/src/MultiLayerOptics/src/CalculationProperties.hpp @@ -12,7 +12,7 @@ namespace MultiLayerOptics explicit CalculationProperties( const FenestrationCommon::CSeries & solarRadiation, std::optional> commonWavelengths = std::nullopt, - std::optional detectorData = std::nullopt);; + std::optional detectorData = std::nullopt); FenestrationCommon::CSeries SolarRadiation; std::optional> CommonWavelengths; From ad31259ec64acbe0ab208d18de4ea86f145a7fec Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 5 Aug 2022 17:03:39 -0700 Subject: [PATCH 53/81] Range creation that was causing slow down is now fixed. --- src/SingleLayerOptics/src/MaterialDescription.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index acab9ae2..033bcb45 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -340,7 +340,10 @@ namespace SingleLayerOptics const CBeamDirection & t_Incoming, const CBeamDirection & t_Outgoing) const { - m_RangeCreator(); + if(m_MaterialScaledRange == nullptr) + { + m_RangeCreator(); + } std::vector aResults; for(const auto wl : m_Wavelengths) From be47053746ea483adc4a188ad8a4b936246cfb15 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Mon, 8 Aug 2022 11:02:25 -0700 Subject: [PATCH 54/81] Trimming material wavelengths is using wavelengthTolerance instead of floatTolerance. --- src/SingleLayerOptics/src/MaterialDescription.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index 033bcb45..ac0c75eb 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -199,8 +199,8 @@ namespace SingleLayerOptics for(const auto & w : wavelengths) { - if(w > (m_MinLambda - ConstantsData::floatErrorTolerance) - && (w < (m_MaxLambda + ConstantsData::floatErrorTolerance))) + if(w > (m_MinLambda - ConstantsData::wavelengthErrorTolerance) + && (w < (m_MaxLambda + ConstantsData::wavelengthErrorTolerance))) { wl.push_back(w); } From 1cb1196ee76bfbcf19fdf27c92342bef6bec9665 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Tue, 9 Aug 2022 08:50:45 -0700 Subject: [PATCH 55/81] Some minor cleanup in CWovenCell class. --- .../src/EquivalentBSDFLayer.cpp | 7 +-- ...PaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 36 +++++------ src/SingleLayerOptics/src/BaseCell.hpp | 1 + src/SingleLayerOptics/src/WovenCell.cpp | 61 +++++++------------ src/SingleLayerOptics/src/WovenCell.hpp | 20 ++---- 5 files changed, 44 insertions(+), 81 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index dcb2e324..c8435a93 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -239,16 +239,13 @@ namespace MultiLayerOptics const auto index = t_Layer.getBandIndex(curWL); assert(index > -1); - const SingleLayerOptics::BSDFIntegrator currentLayer = - aResults[static_cast(index)]; - if(m_LayersWL.size() <= i) { - m_LayersWL.emplace_back(currentLayer, jscPrimeFront[i], jscPrimeBack[i]); + m_LayersWL.emplace_back(aResults[static_cast(index)], jscPrimeFront[i], jscPrimeBack[i]); } else { - m_LayersWL[i].addLayer(currentLayer, jscPrimeFront[i], jscPrimeBack[i]); + m_LayersWL[i].addLayer(aResults[static_cast(index)], jscPrimeFront[i], jscPrimeBack[i]); } } } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index 4d40aeec..106d72d1 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -19,7 +19,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test private: std::unique_ptr m_Layer; - CSeries loadSolarRadiationFile() + static CSeries loadSolarRadiationFile() { // Full ASTM E891-87 Table 1 (Solar radiation) CSeries aSolarRadiation( @@ -278,24 +278,20 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test const auto commonWavelengths{solarRadiation.getXArray()}; auto thickness = 3.048e-3; // [m] - auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( + const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); - aMaterial_102->setBandWavelengths(commonWavelengths); - const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); // Woven material thickness = 0.1; // [m] - auto aWovenMaterial = SingleLayerOptics::Material::nBandMaterial( + const auto aWovenMaterial = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_31100(), thickness, MaterialType::Monolithic); - aWovenMaterial->setBandWavelengths(commonWavelengths); - // make cell geometry - const auto diameter = 0.001; // m - const auto spacing = 0.002; // m + constexpr auto diameter = 0.001; // m + constexpr auto spacing = 0.002; // m // Perforated layer is created here auto LayerWoven = CBSDFLayerMaker::getWovenLayer(aWovenMaterial, aBSDF, diameter, spacing); @@ -308,23 +304,23 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test } public: - CMultiPaneBSDF & getLayer() const + [[nodiscard]] CMultiPaneBSDF & getLayer() const { return *m_Layer; - }; + } }; TEST_F(MultiPaneBSDF_102_Woven_n_BandMaterial, TestWovenShade) { SCOPED_TRACE("Begin Test: Woven shade - BSDF n-band material."); - const double minLambda = 0.3; - const double maxLambda = 2.5; + constexpr double minLambda = 0.3; + constexpr double maxLambda = 2.5; CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.13484889575042058, tauDiff, 1e-6); + EXPECT_NEAR(0.13479190313779665, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); EXPECT_NEAR(0.56618660131592768, rhoDiff, 1e-6); @@ -333,18 +329,18 @@ TEST_F(MultiPaneBSDF_102_Woven_n_BandMaterial, TestWovenShade) EXPECT_NEAR(0.28263551018831601, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.016329671229861488, absDiff2, 1e-6); + EXPECT_NEAR(0.016386267883776801, absDiff2, 1e-6); - const double theta = 0; - const double phi = 0; + constexpr double theta = 0; + constexpr double phi = 0; const double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.22102289250670637, tauHem, 1e-6); + EXPECT_NEAR(0.22093901512586928, tauHem, 1e-6); const double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.20880417866124168, tauDir, 1e-6); + EXPECT_NEAR(0.20872562494761687, tauDir, 1e-6); const double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); @@ -358,5 +354,5 @@ TEST_F(MultiPaneBSDF_102_Woven_n_BandMaterial, TestWovenShade) EXPECT_NEAR(0.24285700879406391, abs1, 1e-6); const double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.024396012833652843, abs2, 1e-6); + EXPECT_NEAR(0.024479598637899801, abs2, 1e-6); } diff --git a/src/SingleLayerOptics/src/BaseCell.hpp b/src/SingleLayerOptics/src/BaseCell.hpp index 9f493dec..9c177f71 100644 --- a/src/SingleLayerOptics/src/BaseCell.hpp +++ b/src/SingleLayerOptics/src/BaseCell.hpp @@ -22,6 +22,7 @@ namespace SingleLayerOptics class CBaseCell { public: + virtual ~CBaseCell() = default; CBaseCell(); CBaseCell(const std::shared_ptr & t_Material, const std::shared_ptr & t_CellDescription, diff --git a/src/SingleLayerOptics/src/WovenCell.cpp b/src/SingleLayerOptics/src/WovenCell.cpp index ec9e88bd..1ea91b8c 100644 --- a/src/SingleLayerOptics/src/WovenCell.cpp +++ b/src/SingleLayerOptics/src/WovenCell.cpp @@ -13,27 +13,6 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { - //////////////////////////////////////////////////////////////////////////////////////////// - // CWovenBase - //////////////////////////////////////////////////////////////////////////////////////////// - CWovenBase::CWovenBase(const std::shared_ptr & t_MaterialProperties, - const std::shared_ptr & t_Cell) : - CBaseCell(t_MaterialProperties, t_Cell), - CUniformDiffuseCell(t_MaterialProperties, t_Cell) - {} - - std::shared_ptr CWovenBase::getCellAsWoven() const - { - if(std::dynamic_pointer_cast(m_CellDescription) == nullptr) - { - assert("Incorrectly assigned cell description."); - } - - std::shared_ptr aCell = - std::dynamic_pointer_cast(m_CellDescription); - - return aCell; - } //////////////////////////////////////////////////////////////////////////////////////////// // CWovenCell @@ -41,39 +20,28 @@ namespace SingleLayerOptics CWovenCell::CWovenCell(const std::shared_ptr & t_MaterialProperties, const std::shared_ptr & t_Cell) : CBaseCell(t_MaterialProperties, t_Cell), - CWovenBase(t_MaterialProperties, t_Cell) + CUniformDiffuseCell(t_MaterialProperties, t_Cell) {} - double CWovenCell::T_dir_dir(const Side t_Side, const CBeamDirection & t_Direction) - { - return m_CellDescription->T_dir_dir(t_Side, t_Direction); - } - double CWovenCell::T_dir_dif(const Side t_Side, const CBeamDirection & t_Direction) { - const double T_material = CWovenBase::T_dir_dif(t_Side, t_Direction); - const auto openness{CWovenBase::T_dir_dir(t_Side, t_Direction)}; + const double T_material = CUniformDiffuseCell::T_dir_dif(t_Side, t_Direction); + const auto openness{CUniformDiffuseCell::T_dir_dir(t_Side, t_Direction)}; const double Tsct = Tscatter_single(t_Side, t_Direction); return T_material * (1 - openness) + Tsct; } double CWovenCell::R_dir_dif(const Side t_Side, const CBeamDirection & t_Direction) { - double R_material = CWovenBase::R_dir_dif(t_Side, t_Direction); + double R_material = CUniformDiffuseCell::R_dir_dif(t_Side, t_Direction); double Tsct = Tscatter_single(t_Side, t_Direction); return R_material - Tsct; } - std::vector CWovenCell::T_dir_dir_band(const Side t_Side, - const CBeamDirection & t_Direction) - { - return CWovenBase::T_dir_dir_band(t_Side, t_Direction); - } - std::vector CWovenCell::T_dir_dif_band(const Side t_Side, const CBeamDirection & t_Direction) { - std::vector T_material = CWovenBase::T_dir_dif_band(t_Side, t_Direction); + std::vector T_material = CUniformDiffuseCell::T_dir_dif_band(t_Side, t_Direction); std::vector Tsct = Tscatter_range(t_Side, t_Direction); assert(Tsct.size() == T_material.size()); for(size_t i = 0; i < T_material.size(); ++i) @@ -86,7 +54,7 @@ namespace SingleLayerOptics std::vector CWovenCell::R_dir_dif_band(const Side t_Side, const CBeamDirection & t_Direction) { - std::vector R_material = CWovenBase::R_dir_dif_band(t_Side, t_Direction); + std::vector R_material = CUniformDiffuseCell::R_dir_dif_band(t_Side, t_Direction); std::vector Tsct = Tscatter_range(t_Side, t_Direction); assert(Tsct.size() == R_material.size()); for(size_t i = 0; i < R_material.size(); ++i) @@ -96,6 +64,19 @@ namespace SingleLayerOptics return R_material; } + std::shared_ptr CWovenCell::getCellAsWoven() const + { + if(std::dynamic_pointer_cast(m_CellDescription) == nullptr) + { + assert("Incorrectly assigned cell description."); + } + + std::shared_ptr aCell = + std::dynamic_pointer_cast(m_CellDescription); + + return aCell; + } + double CWovenCell::Tscatter_single(const Side t_Side, const CBeamDirection & t_Direction) { // Get matterial property from the opposite side of woven thread @@ -125,8 +106,8 @@ namespace SingleLayerOptics { const double aAlt = degrees(t_Direction.Altitude()); const double aAzm = degrees(t_Direction.Azimuth()); - std::shared_ptr aCell = getCellAsWoven(); - const double gamma = aCell->gamma(); + const auto & aCell = *getCellAsWoven(); + const double gamma = aCell.gamma(); if(gamma < 1) { diff --git a/src/SingleLayerOptics/src/WovenCell.hpp b/src/SingleLayerOptics/src/WovenCell.hpp index 8d3bf3a6..e540ab51 100644 --- a/src/SingleLayerOptics/src/WovenCell.hpp +++ b/src/SingleLayerOptics/src/WovenCell.hpp @@ -11,37 +11,25 @@ namespace SingleLayerOptics class ICellDescription; class CBeamDirection; - class CWovenBase : public CUniformDiffuseCell - { - public: - CWovenBase(const std::shared_ptr & t_MaterialProperties, - const std::shared_ptr & t_Cell); - - protected: - std::shared_ptr getCellAsWoven() const; - }; - - class CWovenCell : public CWovenBase + class CWovenCell : public CUniformDiffuseCell { public: CWovenCell(const std::shared_ptr & t_MaterialProperties, const std::shared_ptr & t_Cell); - - double T_dir_dir(FenestrationCommon::Side t_Side, - const CBeamDirection & t_Direction) override; + double T_dir_dif(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; double R_dir_dif(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; - std::vector T_dir_dir_band(FenestrationCommon::Side t_Side, - const CBeamDirection & t_Direction) override; std::vector T_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; std::vector R_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; private: + std::shared_ptr getCellAsWoven() const; + double Tscatter_single(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); std::vector Tscatter_range(FenestrationCommon::Side t_Side, From babf2502ade201f0268a1fc429fbf38d593e9b6b Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Tue, 9 Aug 2022 13:08:44 -0700 Subject: [PATCH 56/81] EquivalentBSDFLayerSingleBand now uses matrices locally which will cause them to be deleted after calculations are finished. --- .../src/EquivalentBSDFLayer.cpp | 3 +- .../src/EquivalentBSDFLayerSingleBand.cpp | 70 +++++++++++-------- .../src/EquivalentBSDFLayerSingleBand.hpp | 47 ++++++++----- ...PaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 2 +- 4 files changed, 75 insertions(+), 47 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index c8435a93..b41ad8b5 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -178,7 +178,8 @@ namespace MultiLayerOptics void CEquivalentBSDFLayer::calculateWavelengthByWavelengthProperties( const size_t t_NumOfLayers, std::vector & wlData) const { -#ifdef STL_MULTITHREADING +//#ifdef STL_MULTITHREADING +#ifdef foo std::for_each( std::execution::par_unseq, wlData.begin(), wlData.end(), [&](wavelenghtData & val) { #else diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp index deea773c..199d07e4 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.cpp @@ -194,29 +194,38 @@ namespace MultiLayerOptics } } - void CEquivalentBSDFLayerSingleBand::BuildForwardAndBackwardLayers(size_t numberOfLayers) + CEquivalentBSDFLayerSingleBand::AbsorptanceLayers + CEquivalentBSDFLayerSingleBand::BuildForwardAndBackwardLayers(size_t numberOfLayers) { + AbsorptanceLayers result; m_EquivalentLayer = m_Layers[0]; - m_Forward.push_back(m_EquivalentLayer); + result.Forward.push_back(m_EquivalentLayer); for(size_t i = 1; i < numberOfLayers; ++i) { m_EquivalentLayer = CBSDFDoubleLayer(m_EquivalentLayer, m_Layers[i]).value(); - m_Forward.push_back(m_EquivalentLayer); + result.Forward.push_back(m_EquivalentLayer); } - m_Backward.push_back(m_EquivalentLayer); + + result.Backward.push_back(m_EquivalentLayer); BSDFIntegrator bLayer = m_Layers[numberOfLayers - 1]; for(size_t i = numberOfLayers - 1; i > 1; --i) { bLayer = CBSDFDoubleLayer(m_Layers[i - 1], bLayer).value(); - m_Backward.push_back(bLayer); + result.Backward.push_back(bLayer); } - m_Backward.push_back(m_Layers[numberOfLayers - 1]); + result.Backward.push_back(m_Layers[numberOfLayers - 1]); + + return result; } - void CEquivalentBSDFLayerSingleBand::CreateIplusAndIminusValues(size_t numberOfLayers, - const size_t matrixSize) + CEquivalentBSDFLayerSingleBand::IrradiationMatrices + CEquivalentBSDFLayerSingleBand::CreateIplusAndIminusValues(size_t numberOfLayers, + const size_t matrixSize, + AbsorptanceLayers & absLayers) { + IrradiationMatrices result; + // Equations used here are from Klems-Matrix Layer calculations- part 2 paper // Note that absorptance calculations do not need irradiances leaving first layer // for front flow calculations (or back layer for backward flow calculations) and because of @@ -227,53 +236,56 @@ namespace MultiLayerOptics { SquareMatrix iMinus{matrixSize}; iMinus.setIdentity(); - m_Iminus[EnergyFlow::Backward].push_back(iMinus); + result.Iminus[EnergyFlow::Backward].push_back(iMinus); SquareMatrix iPlus{matrixSize}; - m_Iplus[EnergyFlow::Forward].push_back(iPlus); + result.Iplus[EnergyFlow::Forward].push_back(iPlus); } else { - BSDFIntegrator & Layer1 = m_Forward[i]; - BSDFIntegrator & Layer2 = m_Backward[i + 1]; + BSDFIntegrator & Layer1 = absLayers.Forward[i]; + BSDFIntegrator & Layer2 = absLayers.Backward[i + 1]; const auto InterRefl2{interReflectance(m_Lambda, Layer2.at(Side::Front, PropertySimple::R), Layer1.at(Side::Back, PropertySimple::R))}; const auto iMinus{ iminusCalc(InterRefl2, Layer2.getMatrix(Side::Back, PropertySimple::T))}; - m_Iminus[EnergyFlow::Backward].push_back(iMinus); + result.Iminus[EnergyFlow::Backward].push_back(iMinus); const auto iPlus{iplusCalc(InterRefl2, Layer2.getMatrix(Side::Front, PropertySimple::R), Layer1.getMatrix(Side::Front, PropertySimple::T))}; - m_Iplus[EnergyFlow::Forward].push_back(iPlus); + result.Iplus[EnergyFlow::Forward].push_back(iPlus); } if(i == 0) { SquareMatrix iMinus{matrixSize}; iMinus.setIdentity(); - m_Iminus[EnergyFlow::Forward].push_back(iMinus); + result.Iminus[EnergyFlow::Forward].push_back(iMinus); SquareMatrix iPlus{matrixSize}; - m_Iplus[EnergyFlow::Backward].push_back(iPlus); + result.Iplus[EnergyFlow::Backward].push_back(iPlus); } else { - BSDFIntegrator & Layer1 = m_Forward[i - 1]; - BSDFIntegrator & Layer2 = m_Backward[i]; + BSDFIntegrator & Layer1 = absLayers.Forward[i - 1]; + BSDFIntegrator & Layer2 = absLayers.Backward[i]; const auto InterRefl1{interReflectance(m_Lambda, Layer1.at(Side::Back, PropertySimple::R), Layer2.at(Side::Front, PropertySimple::R))}; const auto iMinus{ iminusCalc(InterRefl1, Layer1.at(Side::Front, PropertySimple::T))}; - m_Iminus[EnergyFlow::Forward].push_back(iMinus); + result.Iminus[EnergyFlow::Forward].push_back(iMinus); const auto iPlus{iplusCalc(InterRefl1, Layer1.at(Side::Back, PropertySimple::R), Layer2.at(Side::Back, PropertySimple::T))}; - m_Iplus[EnergyFlow::Backward].push_back(iPlus); + result.Iplus[EnergyFlow::Backward].push_back(iPlus); } } + + return result; } - void CEquivalentBSDFLayerSingleBand::CalculateLayerAbsorptances(size_t numberOfLayers) + void CEquivalentBSDFLayerSingleBand::CalculateLayerAbsorptances(size_t numberOfLayers, + IrradiationMatrices irradiation) { for(size_t i = 0; i < numberOfLayers; i++) { @@ -282,8 +294,8 @@ namespace MultiLayerOptics auto AbsFront{m_Layers[i].Abs(aSide)}; auto AbsBack{m_Layers[i].Abs(oppositeSide(aSide))}; auto aEnergyFlow{aSide == Side::Front ? EnergyFlow::Forward : EnergyFlow::Backward}; - auto absorbedFront{AbsFront * m_Iminus.at(aEnergyFlow)[i]}; - auto absorbedBack{AbsBack * m_Iplus.at(aEnergyFlow)[i]}; + auto absorbedFront{AbsFront * irradiation.Iminus.at(aEnergyFlow)[i]}; + auto absorbedBack{AbsBack * irradiation.Iplus.at(aEnergyFlow)[i]}; std::transform(absorbedFront.begin(), absorbedFront.end(), absorbedBack.begin(), @@ -292,8 +304,9 @@ namespace MultiLayerOptics m_A.at(aSide).push_back(absorbedFront); // Photovoltaic calculation - auto jscFront{m_JSCPrime.at(aSide)[i] * m_Iminus.at(aEnergyFlow)[i]}; - auto jscBack{m_JSCPrime.at(oppositeSide(aSide))[i] * m_Iplus.at(aEnergyFlow)[i]}; + auto jscFront{m_JSCPrime.at(aSide)[i] * irradiation.Iminus.at(aEnergyFlow)[i]}; + auto jscBack{m_JSCPrime.at(oppositeSide(aSide))[i] + * irradiation.Iplus.at(aEnergyFlow)[i]}; std::transform(jscFront.begin(), jscFront.end(), jscBack.begin(), @@ -311,12 +324,13 @@ namespace MultiLayerOptics // Absorptance calculations need to observe every layer in isolation. For that purpose // code bellow will create m_Forward and m_Backward layers const auto numberOfLayers{m_Layers.size()}; - BuildForwardAndBackwardLayers(numberOfLayers); + auto absLayers{BuildForwardAndBackwardLayers(numberOfLayers)}; const auto matrixSize{m_Lambda.size()}; - CreateIplusAndIminusValues(numberOfLayers, matrixSize); + const auto irradiance{ + CreateIplusAndIminusValues(numberOfLayers, matrixSize, absLayers)}; - CalculateLayerAbsorptances(numberOfLayers); + CalculateLayerAbsorptances(numberOfLayers, irradiance); m_PropertiesCalculated = true; } } diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp index fca1fa0e..c71e343f 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp @@ -61,9 +61,6 @@ namespace MultiLayerOptics void addLayer(const SingleLayerOptics::BSDFIntegrator & t_Layer, const std::vector & jcsFront = std::vector(), const std::vector & jcsBack = std::vector()); - void BuildForwardAndBackwardLayers(size_t numberOfLayers); - void CreateIplusAndIminusValues(size_t numberOfLayers, size_t matrixSize); - void CalculateLayerAbsorptances(size_t numberOfLayers); FenestrationCommon::SquareMatrix getMatrix(FenestrationCommon::Side t_Side, FenestrationCommon::PropertySimple t_Property); @@ -77,6 +74,15 @@ namespace MultiLayerOptics [[nodiscard]] size_t getNumberOfLayers() const; private: + // Forward and backward layers are used for calculation of equivalent absorptances + struct AbsorptanceLayers + { + std::vector Forward; + std::vector Backward; + }; + + AbsorptanceLayers BuildForwardAndBackwardLayers(size_t numberOfLayers); + void calcEquivalentProperties(); [[nodiscard]] FenestrationCommon::SquareMatrix @@ -91,20 +97,27 @@ namespace MultiLayerOptics SingleLayerOptics::BSDFIntegrator m_EquivalentLayer; std::vector m_Layers; - // Forward and backward layers are used for calculation of equivalent absorptances - std::vector m_Forward; - std::vector m_Backward; - - // Equations for absorptance calculations are described in "Klems-Matrix Layer Calculations" - // document. Two equations (3.7a) and (3.7b) are used to calculate front and back - // absorptances. In to process of calculation incoming and outgoing rays are calculated and - // stored into this map. Iminus and Iplus are stored in a way that - // Iminus[EnergyFlow::Forward][i] and Iplus[EnergyFlow::Backward][i] are representing front - // and back incoming irradinace at the layer on the position "i" - std::map> - m_Iminus; - std::map> - m_Iplus; + struct IrradiationMatrices + { + // Equations for absorptance calculations are described in "Klems-Matrix Layer + // Calculations" document. Two equations (3.7a) and (3.7b) are used to calculate front + // and back absorptances. In to process of calculation incoming and outgoing rays are + // calculated and stored into this map. Iminus and Iplus are stored in a way that + // Iminus[EnergyFlow::Forward][i] and Iplus[EnergyFlow::Backward][i] are representing + // front and back incoming irradinace at the layer on the position "i" + std::map> + Iminus; + std::map> + Iplus; + }; + + IrradiationMatrices CreateIplusAndIminusValues(size_t numberOfLayers, + size_t matrixSize, + AbsorptanceLayers & absLayers); + + void CalculateLayerAbsorptances(size_t numberOfLayers, + IrradiationMatrices irradiation); + // Photovoltaic properties for every direction. Vector is scaled to incoming // irradiance set to one. diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index 106d72d1..b87008f0 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -275,7 +275,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test virtual void SetUp() { const auto solarRadiation{loadSolarRadiationFile()}; - const auto commonWavelengths{solarRadiation.getXArray()}; + const auto wl{loadSolarRadiationFile().getXArray()}; auto thickness = 3.048e-3; // [m] const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( From 255a97850edbe804c1d6e289444101258c168c20 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Tue, 9 Aug 2022 13:29:44 -0700 Subject: [PATCH 57/81] Multithreading was off by mistake. Turned it back on now. --- src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp | 3 +-- .../tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index b41ad8b5..c8435a93 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -178,8 +178,7 @@ namespace MultiLayerOptics void CEquivalentBSDFLayer::calculateWavelengthByWavelengthProperties( const size_t t_NumOfLayers, std::vector & wlData) const { -//#ifdef STL_MULTITHREADING -#ifdef foo +#ifdef STL_MULTITHREADING std::for_each( std::execution::par_unseq, wlData.begin(), wlData.end(), [&](wavelenghtData & val) { #else diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index b87008f0..d918de56 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -275,7 +275,6 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test virtual void SetUp() { const auto solarRadiation{loadSolarRadiationFile()}; - const auto wl{loadSolarRadiationFile().getXArray()}; auto thickness = 3.048e-3; // [m] const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( From 15697c2ff895885ea76a3ee8ceb1828d8126b8c6 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Tue, 9 Aug 2022 15:56:30 -0700 Subject: [PATCH 58/81] Wavelength by wavelength calculations are no longer store intermediate data. --- .../src/EquivalentBSDFLayer.cpp | 114 +++++------------- .../src/EquivalentBSDFLayer.hpp | 18 +-- ...PaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 4 +- 3 files changed, 35 insertions(+), 101 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index c8435a93..81b05a41 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -35,7 +35,6 @@ namespace MultiLayerOptics { layer->setBandWavelengths(matrixWavelengths.value()); } - updateWavelengthLayers(*layer); } } @@ -47,7 +46,6 @@ namespace MultiLayerOptics { m_Lambda = t_Layer->getResults().lambdaMatrix(); } - updateWavelengthLayers(*t_Layer); m_Layer.push_back(t_Layer); } @@ -102,11 +100,9 @@ namespace MultiLayerOptics void CEquivalentBSDFLayer::setSolarRadiation(CSeries & t_SolarRadiation) { // Need to recreate wavelenght by wavelength layers - m_LayersWL.clear(); for(auto & aLayer : m_Layer) { aLayer->setSourceData(t_SolarRadiation); - updateWavelengthLayers(*aLayer); } m_Calculated = false; } @@ -124,18 +120,16 @@ namespace MultiLayerOptics void CEquivalentBSDFLayer::setMatrixLayerWavelengths(const std::vector & wavelenghts) { m_CombinedLayerWavelengths = wavelenghts; - m_LayersWL.clear(); for(const auto & layer : m_Layer) { layer->setBandWavelengths(wavelenghts); - updateWavelengthLayers(*layer); } } void CEquivalentBSDFLayer::calculate() { const size_t matrixSize = m_Lambda.size(); - const size_t numberOfLayers = m_LayersWL[0].getNumberOfLayers(); + const size_t numberOfLayers = m_Layer.size(); for(Side aSide : EnumSide()) { @@ -147,107 +141,59 @@ namespace MultiLayerOptics } } - calculateAndStoreWavelengthProperties(numberOfLayers, m_CombinedLayerWavelengths); + calculateWavelengthByWavelengthProperties(); m_Calculated = true; } - void CEquivalentBSDFLayer::calculateAndStoreWavelengthProperties( - size_t const t_NumOfLayers, const std::vector & wavelengths) + void CEquivalentBSDFLayer::calculateWavelengthByWavelengthProperties() { - auto wlData = createWavelengthByWavelengthData(wavelengths); - - calculateWavelengthByWavelengthProperties(t_NumOfLayers, wlData); - - storeWavelengthByWavelengthProperties(t_NumOfLayers, wlData); - } - - std::vector - CEquivalentBSDFLayer::createWavelengthByWavelengthData( - const std::vector & wavelengths) - { - std::vector wlData; - - for(size_t i = 0u; i < wavelengths.size(); ++i) - { - wlData.emplace_back(wavelengths[i], m_LayersWL[i]); - } - return wlData; - } - - void CEquivalentBSDFLayer::calculateWavelengthByWavelengthProperties( - const size_t t_NumOfLayers, std::vector & wlData) const - { -#ifdef STL_MULTITHREADING - std::for_each( - std::execution::par_unseq, wlData.begin(), wlData.end(), [&](wavelenghtData & val) { -#else - std::for_each( - wlData.begin(), wlData.end(), [&](wavelenghtData & val) { -#endif - for(auto aSide : EnumSide()) - { - for(size_t layerNumber = 0; layerNumber < t_NumOfLayers; ++layerNumber) - { - val.totA[{aSide, layerNumber}] = - val.layer.getLayerAbsorptances(layerNumber + 1, aSide); - val.totJSC[{aSide, layerNumber}] = - val.layer.getLayerJSC(layerNumber + 1, aSide); - } - for(auto aProperty : EnumPropertySimple()) - { - val.tot[{aSide, aProperty}] = val.layer.getProperty(aSide, aProperty); - } - } - }); - } - - void CEquivalentBSDFLayer::storeWavelengthByWavelengthProperties( - const size_t t_NumOfLayers, const std::vector & wlData) - { - for(auto & t : wlData) + for(size_t i = 0u; i < m_CombinedLayerWavelengths.size(); ++i) { + auto layer{getEquivalentLayerAtWavelength(i)}; for(auto aSide : EnumSide()) { - for(size_t layerNumber = 0; layerNumber < t_NumOfLayers; ++layerNumber) + const auto numberOfLayers{m_Layer.size()}; + for(size_t layerNumber = 0; layerNumber < numberOfLayers; ++layerNumber) { m_TotA.at(aSide).addProperties( - layerNumber, t.wavelength, t.totA.at({aSide, layerNumber})); + layerNumber, m_CombinedLayerWavelengths[i], layer.getLayerAbsorptances(layerNumber + 1, aSide)); m_TotJSC.at(aSide).addProperties( - layerNumber, t.wavelength, t.totJSC.at({aSide, layerNumber})); + layerNumber, m_CombinedLayerWavelengths[i], layer.getLayerJSC(layerNumber + 1, aSide)); } for(auto aProperty : EnumPropertySimple()) { m_Tot.at({aSide, aProperty}) - .addProperties(t.wavelength, t.tot.at({aSide, aProperty})); + .addProperties(m_CombinedLayerWavelengths[i], layer.getProperty(aSide, aProperty)); } } } + } - void CEquivalentBSDFLayer::updateWavelengthLayers(SingleLayerOptics::CBSDFLayer & t_Layer) + CEquivalentBSDFLayerSingleBand + CEquivalentBSDFLayer::getEquivalentLayerAtWavelength(size_t wavelengthIndex) const { - const auto aResults = t_Layer.getWavelengthResults(); - const auto size = m_CombinedLayerWavelengths.size(); - - auto jscPrimeFront{t_Layer.jscPrime(Side::Front, m_CombinedLayerWavelengths)}; - const auto jscPrimeBack{t_Layer.jscPrime(Side::Back, m_CombinedLayerWavelengths)}; + auto jscPrimeFront{m_Layer[0]->jscPrime(Side::Front, m_CombinedLayerWavelengths)}; + auto jscPrimeBack{m_Layer[0]->jscPrime(Side::Back, m_CombinedLayerWavelengths)}; + const auto layerWLResults{m_Layer[0]->getWavelengthResults()}; + const auto curWL = m_CombinedLayerWavelengths[wavelengthIndex]; + auto index = m_Layer[0]->getBandIndex(curWL); + CEquivalentBSDFLayerSingleBand result{layerWLResults[static_cast(index)], + jscPrimeFront[wavelengthIndex], + jscPrimeBack[wavelengthIndex]}; - for(size_t i = 0; i < size; ++i) + for(size_t i = 1u; i < m_Layer.size(); ++i) { - const auto curWL = m_CombinedLayerWavelengths[i]; - const auto index = t_Layer.getBandIndex(curWL); - assert(index > -1); - - if(m_LayersWL.size() <= i) - { - m_LayersWL.emplace_back(aResults[static_cast(index)], jscPrimeFront[i], jscPrimeBack[i]); - } - else - { - m_LayersWL[i].addLayer(aResults[static_cast(index)], jscPrimeFront[i], jscPrimeBack[i]); - } + jscPrimeFront = m_Layer[i]->jscPrime(Side::Front, m_CombinedLayerWavelengths); + jscPrimeBack = m_Layer[i]->jscPrime(Side::Back, m_CombinedLayerWavelengths); + index = m_Layer[i]->getBandIndex(curWL); + result.addLayer(m_Layer[i]->getWavelengthResults()[index], + jscPrimeFront[wavelengthIndex], + jscPrimeBack[wavelengthIndex]); } + + return result; } std::vector CEquivalentBSDFLayer::unionOfLayerWavelengths( diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index 0aa1e23e..ba69dcba 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -69,18 +69,11 @@ namespace MultiLayerOptics void calculate(); - // Wavelength layer per layer calculations - void calculateAndStoreWavelengthProperties(const size_t t_NumOfLayers, - const std::vector & wavelengths); - - void updateWavelengthLayers(SingleLayerOptics::CBSDFLayer & t_Layer); + CEquivalentBSDFLayerSingleBand getEquivalentLayerAtWavelength(size_t wavelengthIndex) const; static std::vector unionOfLayerWavelengths( const std::vector> & t_Layer); - // std::vector of layer results over each wavelength - std::vector m_LayersWL; - // Layers that are added to the equivalent layer std::vector> m_Layer; @@ -104,13 +97,8 @@ namespace MultiLayerOptics std::vector m_CombinedLayerWavelengths; bool m_Calculated; - void storeWavelengthByWavelengthProperties(const size_t t_NumOfLayers, - const std::vector & wlData); - - void calculateWavelengthByWavelengthProperties(const size_t t_NumOfLayers, - std::vector & wlData) const; - std::vector - createWavelengthByWavelengthData(const std::vector & wavelengths); + void calculateWavelengthByWavelengthProperties(); + }; } // namespace MultiLayerOptics diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index d918de56..11c1731a 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -280,7 +280,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); - const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); // Woven material @@ -295,7 +295,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test // Perforated layer is created here auto LayerWoven = CBSDFLayerMaker::getWovenLayer(aWovenMaterial, aBSDF, diameter, spacing); - m_Layer = CMultiPaneBSDF::create({LayerWoven, Layer_102}); + m_Layer = CMultiPaneBSDF::create({LayerWoven}); const CalculationProperties input{loadSolarRadiationFile(), loadSolarRadiationFile().getXArray()}; From 1ef351e3a0f0684781208297c6c8db2d8340ed29 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 11 Aug 2022 14:41:37 -0700 Subject: [PATCH 59/81] Cleaned up cmake compiler multithreading flag since it is not used in this version. Update to woven case so it can calculate. --- cmake/WCECompilerFlags.cmake | 2 +- .../tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/WCECompilerFlags.cmake b/cmake/WCECompilerFlags.cmake index 1bbe4145..357470b5 100644 --- a/cmake/WCECompilerFlags.cmake +++ b/cmake/WCECompilerFlags.cmake @@ -39,7 +39,7 @@ ENDIF () if (MSVC AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.11)) # VS 2017 : Disable warnings from from gtest code, using deprecated code related to TR1 add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING) - add_definitions(-DSTL_MULTITHREADING) + # add_definitions(-DSTL_MULTITHREADING) endif() macro( warning_level_update_wce ) diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index 11c1731a..d918de56 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -280,7 +280,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test const auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); - const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Full); + const auto aBSDF = BSDFHemisphere::create(BSDFBasis::Quarter); auto Layer_102 = CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); // Woven material @@ -295,7 +295,7 @@ class MultiPaneBSDF_102_Woven_n_BandMaterial : public testing::Test // Perforated layer is created here auto LayerWoven = CBSDFLayerMaker::getWovenLayer(aWovenMaterial, aBSDF, diameter, spacing); - m_Layer = CMultiPaneBSDF::create({LayerWoven}); + m_Layer = CMultiPaneBSDF::create({LayerWoven, Layer_102}); const CalculationProperties input{loadSolarRadiationFile(), loadSolarRadiationFile().getXArray()}; From 1607be699c746ea0d13ba23afbde316f7768a6cf Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 11 Aug 2022 15:42:21 -0700 Subject: [PATCH 60/81] Materials have function to pull out band property --- .../src/MaterialDescription.cpp | 69 +++++++++-- .../src/MaterialDescription.hpp | 64 +++++++++-- .../tst/units/BSDFMaterialDualBand.unit.cpp | 15 +++ .../tst/units/BSDFMaterialSingleBand.unit.cpp | 22 +++- .../tst/units/nBandMaterial.unit.cpp | 107 ++++++++++++++++++ 5 files changed, 255 insertions(+), 22 deletions(-) create mode 100644 src/SingleLayerOptics/tst/units/nBandMaterial.unit.cpp diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index ac0c75eb..c6469ac2 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -53,10 +53,9 @@ namespace SingleLayerOptics } std::shared_ptr createNIRRange(const std::shared_ptr & t_PartialRange, - const std::shared_ptr & t_FullRange, - const double t_Fraction) + const std::shared_ptr & t_FullRange, + const double t_Fraction) { - double Tf_nir = modifyProperty(t_PartialRange->getProperty(Property::T, Side::Front), t_FullRange->getProperty(Property::T, Side::Front), t_Fraction); @@ -79,7 +78,6 @@ namespace SingleLayerOptics const std::shared_ptr & t_FullRange, const double t_Fraction) { - auto Tf_nir = modifyProperties(t_PartialRange->getBSDFMatrix(Property::T, Side::Front), t_FullRange->getBSDFMatrix(Property::T, Side::Front), t_Fraction); @@ -285,6 +283,18 @@ namespace SingleLayerOptics return aResult; } + double CMaterialSingleBand::getBandProperty(FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + size_t wavelengthIndex, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection) const + { + std::ignore = wavelengthIndex; + std::ignore = t_IncomingDirection; + std::ignore = t_OutgoingDirection; + return getProperty(t_Property, t_Side); + } + std::vector CMaterialSingleBand::calculateBandWavelengths() { return {m_MinLambda, m_MaxLambda}; @@ -348,16 +358,27 @@ namespace SingleLayerOptics for(const auto wl : m_Wavelengths) { - aResults.emplace_back(getMaterialFromWavelegth(wl)->getProperty( + aResults.emplace_back(getMaterialFromWavelength(wl)->getProperty( t_Property, t_Side, t_Incoming, t_Outgoing)); } return aResults; } + double IMaterialDualBand::getBandProperty(FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + size_t wavelengthIndex, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection) const + { + return getBandProperties( + t_Property, t_Side, t_IncomingDirection, t_OutgoingDirection)[wavelengthIndex]; + } + std::vector IMaterialDualBand::calculateBandWavelengths() { - return {0.3, 0.38, 0.78 + ConstantsData::VisibleRangeOffset, 2.5}; + m_Wavelengths = {0.3, 0.38, 0.78 + ConstantsData::VisibleRangeOffset, 2.5}; + return m_Wavelengths; } CMaterialDualBand::CMaterialDualBand(const std::shared_ptr & t_PartialRange, @@ -376,7 +397,8 @@ namespace SingleLayerOptics const std::shared_ptr & t_FullRange, const double t_Fraction) { - m_MaterialScaledRange = SingleLayerOptics::createNIRRange(t_PartialRange, t_FullRange, t_Fraction); + m_MaterialScaledRange = + SingleLayerOptics::createNIRRange(t_PartialRange, t_FullRange, t_Fraction); } void IMaterialDualBand::createRangesFromRatio(double t_Ratio) @@ -407,7 +429,7 @@ namespace SingleLayerOptics } std::shared_ptr - IMaterialDualBand::getMaterialFromWavelegth(const double wavelength) const + IMaterialDualBand::getMaterialFromWavelength(const double wavelength) const { std::shared_ptr result; @@ -467,6 +489,16 @@ namespace SingleLayerOptics m_MinLambda, m_MaxLambda, t_Property, t_Side, t_IncomingDirection.theta()); } + double CMaterialSample::getBandProperty(FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + size_t wavelengthIndex, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection) const + { + return getBandProperties( + t_Property, t_Side, t_IncomingDirection, t_OutgoingDirection)[wavelengthIndex]; + } + std::vector CMaterialSample::calculateBandWavelengths() { @@ -562,6 +594,16 @@ namespace SingleLayerOptics return aValues; } + double CMaterialMeasured::getBandProperty(FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + size_t wavelengthIndex, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection) const + { + return getBandProperties( + t_Property, t_Side, t_IncomingDirection, t_OutgoingDirection)[wavelengthIndex]; + } + std::vector CMaterialMeasured::calculateBandWavelengths() { CSingleAngularMeasurement aAngular = *m_AngularMeasurements->getMeasurements(0.0); @@ -651,6 +693,17 @@ namespace SingleLayerOptics return bandProperties; } + double + CMaterialSingleBandBSDF::getBandProperty(FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + size_t wavelengthIndex, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection) const + { + std::ignore = wavelengthIndex; + return getProperty(t_Property, t_Side, t_IncomingDirection, t_OutgoingDirection); + } + std::vector> const & CMaterialSingleBandBSDF::getBSDFMatrix(FenestrationCommon::Property const & t_Property, FenestrationCommon::Side const & t_Side) const diff --git a/src/SingleLayerOptics/src/MaterialDescription.hpp b/src/SingleLayerOptics/src/MaterialDescription.hpp index 58a6d3c3..a55b3720 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.hpp +++ b/src/SingleLayerOptics/src/MaterialDescription.hpp @@ -76,6 +76,13 @@ namespace SingleLayerOptics const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const = 0; + virtual double + getBandProperty(FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + size_t wavelengthIndex, + const CBeamDirection & t_IncomingDirection = CBeamDirection(), + const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const = 0; + std::vector getBandProperties(); std::shared_ptr getSpectralSample(); @@ -95,7 +102,8 @@ namespace SingleLayerOptics [[nodiscard]] bool isWavelengthInRange(double wavelength) const; - [[nodiscard]] virtual FenestrationCommon::CSeries jscPrime(FenestrationCommon::Side t_Side) const; + [[nodiscard]] virtual FenestrationCommon::CSeries + jscPrime(FenestrationCommon::Side t_Side) const; protected: double m_MinLambda; @@ -126,9 +134,16 @@ namespace SingleLayerOptics const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; - std::vector getBandProperties( + [[nodiscard]] std::vector getBandProperties( + FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection = CBeamDirection(), + const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; + + [[nodiscard]] double getBandProperty( FenestrationCommon::Property t_Property, FenestrationCommon::Side t_Side, + size_t wavelengthIndex, const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; @@ -161,12 +176,19 @@ namespace SingleLayerOptics const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; - std::vector getBandProperties( + [[nodiscard]] std::vector getBandProperties( FenestrationCommon::Property t_Property, FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; + [[nodiscard]] double getBandProperty( + FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + size_t wavelengthIndex, + const CBeamDirection & t_IncomingDirection = CBeamDirection(), + const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; + std::vector> const & getBSDFMatrix(FenestrationCommon::Property const & t_Property, FenestrationCommon::Side const & t_Side) const; @@ -215,9 +237,16 @@ namespace SingleLayerOptics const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; - std::vector getBandProperties( + [[nodiscard]] std::vector getBandProperties( + FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection = CBeamDirection(), + const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; + + [[nodiscard]] double getBandProperty( FenestrationCommon::Property t_Property, FenestrationCommon::Side t_Side, + size_t wavelengthIndex, const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; @@ -242,7 +271,8 @@ namespace SingleLayerOptics // properties for other partial ranges that are not provided by the user. // double getModifiedProperty(double t_Range, double t_Solar, double t_Fraction) const; - [[nodiscard]] std::shared_ptr getMaterialFromWavelegth(double wavelength) const; + [[nodiscard]] std::shared_ptr getMaterialFromWavelength(double wavelength) const; + [[nodiscard]] std::shared_ptr getMaterialFromWavelength(size_t wavelengthIndex) const; std::shared_ptr m_MaterialSolarRange; std::shared_ptr m_MaterialVisibleRange; @@ -251,7 +281,6 @@ namespace SingleLayerOptics std::shared_ptr m_MaterialScaledRange; std::function m_RangeCreator; - }; class CMaterialDualBand : public IMaterialDualBand @@ -317,7 +346,6 @@ namespace SingleLayerOptics class CMaterialSample : public CMaterial { public: - CMaterialSample( const std::shared_ptr & t_SpectralSample, double t_Thickness, @@ -335,12 +363,19 @@ namespace SingleLayerOptics const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; // Get properties at each wavelength and at given incident angle - std::vector getBandProperties( + [[nodiscard]] std::vector getBandProperties( FenestrationCommon::Property t_Property, FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; + [[nodiscard]] double getBandProperty( + FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + size_t wavelengthIndex, + const CBeamDirection & t_IncomingDirection = CBeamDirection(), + const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; + void setBandWavelengths(const std::vector & wavelengths) override; void Flipped(bool flipped) override; @@ -361,7 +396,8 @@ namespace SingleLayerOptics double t_Thickness, FenestrationCommon::MaterialType t_Type); - [[nodiscard]] FenestrationCommon::CSeries jscPrime(FenestrationCommon::Side t_Side) const override; + [[nodiscard]] FenestrationCommon::CSeries + jscPrime(FenestrationCommon::Side t_Side) const override; private: std::shared_ptr m_PVSample; @@ -377,7 +413,6 @@ namespace SingleLayerOptics class CMaterialMeasured : public CMaterial { public: - CMaterialMeasured( const std::shared_ptr & t_Measurements); @@ -392,9 +427,16 @@ namespace SingleLayerOptics const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; // Get properties at each wavelength and at given incident angle - std::vector getBandProperties( + [[nodiscard]] std::vector getBandProperties( + FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection = CBeamDirection(), + const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; + + [[nodiscard]] double getBandProperty( FenestrationCommon::Property t_Property, FenestrationCommon::Side t_Side, + size_t wavelengthIndex, const CBeamDirection & t_IncomingDirection = CBeamDirection(), const CBeamDirection & t_OutgoingDirection = CBeamDirection()) const override; diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp index 552b37cc..61925d7d 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialDualBand.unit.cpp @@ -153,4 +153,19 @@ TEST_F(TestBSDFMaterialDualBand, TestProperties) { EXPECT_NEAR(expectedBandProperties[i], bandProperties[i], 1e-6); } +} + +TEST_F(TestBSDFMaterialDualBand, TestPropertyAtWavelength) +{ + double theta = 0; + double phi = 0; + CBeamDirection incomingDirection(theta, phi); + CBeamDirection outgoingDirection(theta, phi); + size_t wavelengthIndex{1u}; + + const auto correct{0.0416186}; + const auto result = m_Material->getBandProperty( + Property::T, Side::Front, wavelengthIndex, incomingDirection, outgoingDirection); + + EXPECT_NEAR(correct, result, 1e-6); } \ No newline at end of file diff --git a/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp b/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp index 0c829688..31e14dac 100644 --- a/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp +++ b/src/SingleLayerOptics/tst/units/BSDFMaterialSingleBand.unit.cpp @@ -58,8 +58,8 @@ class TestBSDFMaterialSingleBand : public testing::Test m_Tb = m_Tf; m_Rf = loadRf(); m_Rb = m_Rf; - m_Material = std::make_shared( - m_Tf, m_Tb, m_Rf, m_Rb, m_Hemisphere); + m_Material = + std::make_shared(m_Tf, m_Tb, m_Rf, m_Rb, m_Hemisphere); } }; @@ -113,8 +113,24 @@ TEST_F(TestBSDFMaterialSingleBand, TestProperties) double propValue = m_Material->getProperty(Property::T, Side::Front, incomingDirection, outgoingDirection); std::vector expectedBandProperties{propValue, propValue}; - auto test{m_Material->getBandProperties(Property::T, Side::Front, incomingDirection, outgoingDirection)}; + auto test{m_Material->getBandProperties( + Property::T, Side::Front, incomingDirection, outgoingDirection)}; EXPECT_EQ( m_Material->getBandProperties(Property::T, Side::Front, incomingDirection, outgoingDirection), expectedBandProperties); } + +TEST_F(TestBSDFMaterialSingleBand, TestPropertyAtWavelength) +{ + double theta = 0; + double phi = 0; + CBeamDirection incomingDirection(theta, phi); + CBeamDirection outgoingDirection(theta, phi); + size_t wavelengthIndex{1u}; + + const auto correct{0.081878}; + const auto result = m_Material->getBandProperty( + Property::T, Side::Front, wavelengthIndex, incomingDirection, outgoingDirection); + + EXPECT_NEAR(correct, result, 1e-6); +} diff --git a/src/SingleLayerOptics/tst/units/nBandMaterial.unit.cpp b/src/SingleLayerOptics/tst/units/nBandMaterial.unit.cpp new file mode 100644 index 00000000..39e9480c --- /dev/null +++ b/src/SingleLayerOptics/tst/units/nBandMaterial.unit.cpp @@ -0,0 +1,107 @@ +#include +#include + +#include + +#include "WCESpectralAveraging.hpp" +#include "WCESingleLayerOptics.hpp" +#include "WCECommon.hpp" + + +using namespace SingleLayerOptics; +using namespace FenestrationCommon; +using namespace SpectralAveraging; + +class TestnBandMaterial : public testing::Test +{ +private: + std::shared_ptr m_Material; + + std::shared_ptr loadSampleData_NFRC_102() + { + auto aMeasurements_102 = CSpectralSampleData::create( + {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, + {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, + {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, + {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, + {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, + {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, + {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, + {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, + {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, + {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, + {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, + {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, + {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, + {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, + {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, + {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, + {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, + {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, + {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, + {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, + {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, + {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, + {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, + {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, + {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, + {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, + {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, + {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, + {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, + {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, + {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, + {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, + {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, + {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, + {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, + {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, + {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, + {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, + {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, + {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, + {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, + {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, + {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, + {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, + {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, + {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, + {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, + {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, + {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, + {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, + {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, + {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, + {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, + {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, + {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, + {2.500, 0.8220, 0.0680, 0.0680}}); + + return aMeasurements_102; + } + +protected: + virtual void SetUp() + { + // Create material from samples + auto thickness = 3.048e-3; // [m] + m_Material = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); + } + +public: + CMaterial & getMaterial() + { + return *m_Material; + }; +}; + +TEST_F(TestnBandMaterial, TestProperties) +{ + const auto & mat{getMaterial()}; + const size_t wlIndex{5u}; + const auto value{mat.getBandProperty(Property::T, Side::Front, wlIndex)}; + const auto correct{0.218}; + + EXPECT_NEAR(value, correct, 1e-6); +} From 20e44bd50cd522516b059e65d7c810f3f41988d0 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Thu, 11 Aug 2022 17:13:38 -0700 Subject: [PATCH 61/81] SpecularCell results at wavelength return --- src/SingleLayerOptics/src/BSDFLayer.cpp | 44 +++++++++++++++++++ src/SingleLayerOptics/src/BSDFLayer.hpp | 10 +++++ src/SingleLayerOptics/src/BaseCell.cpp | 18 +++++++- src/SingleLayerOptics/src/BaseCell.hpp | 16 +++++-- .../src/DirectionalDiffuseBSDFLayer.cpp | 32 ++++++++++++++ .../src/DirectionalDiffuseBSDFLayer.hpp | 5 +++ .../src/DirectionalDiffuseCell.cpp | 27 ++++++++++++ .../src/DirectionalDiffuseCell.hpp | 10 +++++ .../src/SpecularBSDFLayer.cpp | 9 ++++ .../src/SpecularBSDFLayer.hpp | 11 +++-- src/SingleLayerOptics/src/SpecularCell.cpp | 14 ++++++ src/SingleLayerOptics/src/SpecularCell.hpp | 8 ++++ .../src/UniformDiffuseBSDFLayer.cpp | 26 +++++++++++ .../src/UniformDiffuseBSDFLayer.hpp | 12 +++-- .../src/UniformDiffuseCell.cpp | 27 +++++++++++- .../src/UniformDiffuseCell.hpp | 16 ++++++- .../tst/units/SpecularLayer_102.unit.cpp | 15 +++++++ 17 files changed, 286 insertions(+), 14 deletions(-) diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index dc6f06a1..9abeaa6b 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -55,6 +55,50 @@ namespace SingleLayerOptics return m_WVResults; } + BSDFIntegrator CBSDFLayer::getResultsAtWavelength(size_t wavelengthIndex) + { + BSDFIntegrator results{m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)}; + calculate_dir_dir_wl(wavelengthIndex, results); + return results; + } + + void CBSDFLayer::calculate_dir_dir_wl(size_t wavelengthIndex, BSDFIntegrator & results) + { + for(Side aSide : EnumSide()) + { + const auto & aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); + size_t size = aDirections.size(); + for(size_t i = 0; i < size; ++i) + { + const CBeamDirection aDirection = aDirections[i].centerPoint(); + const auto aTau = + m_Cell->T_dir_dir_at_wavelength(aSide, aDirection, wavelengthIndex); + const auto aRho = + m_Cell->R_dir_dir_at_wavelength(aSide, aDirection, wavelengthIndex); + double Lambda = aDirections[i].lambda(); + + auto & tau = results.getMatrix(aSide, PropertySimple::T); + auto & rho = results.getMatrix(aSide, PropertySimple::R); + tau(i, i) += aTau / Lambda; + rho(i, i) += aRho / Lambda; + } + } + } + + void CBSDFLayer::calculate_dir_dif_wv(size_t wavelengthIndex, BSDFIntegrator & results) + { + for(Side aSide : EnumSide()) + { + const auto & aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); + + for(size_t directionIndex = 0; directionIndex < aDirections.size(); ++directionIndex) + { + const CBeamDirection aDirection = aDirections[directionIndex].centerPoint(); + calcDiffuseDistribution_byWavelength(aSide, aDirection, directionIndex, wavelengthIndex, results); + } + } + } + int CBSDFLayer::getBandIndex(const double t_Wavelength) { return m_Cell->getBandIndex(t_Wavelength); diff --git a/src/SingleLayerOptics/src/BSDFLayer.hpp b/src/SingleLayerOptics/src/BSDFLayer.hpp index 908804ff..adbaa4e5 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.hpp +++ b/src/SingleLayerOptics/src/BSDFLayer.hpp @@ -42,6 +42,7 @@ namespace SingleLayerOptics // BSDF results for each wavelenght given in specular cell std::vector getWavelengthResults(); + BSDFIntegrator getResultsAtWavelength(size_t wavelengthIndex); int getBandIndex(double t_Wavelength); @@ -69,6 +70,12 @@ namespace SingleLayerOptics const CBeamDirection & t_Direction, const size_t t_DirectionIndex) = 0; + virtual void calcDiffuseDistribution_byWavelength(const FenestrationCommon::Side aSide, + const CBeamDirection & t_Direction, + const size_t t_DirectionIndex, + size_t wavelengthIndex, + BSDFIntegrator & results) = 0; + // BSDF layer is not calculated by default because it is time consuming process and in some // cases this call is not necessary. However, refactoring is needed since there is no reason // to create CBSDFLayer if it will not be calculated @@ -94,6 +101,9 @@ namespace SingleLayerOptics void calc_dir_dif_wv(); // State to hold information of wavelength results are already calculated bool m_CalculatedWV; + + void calculate_dir_dir_wl(size_t wavelengthIndex, BSDFIntegrator & results); + void calculate_dir_dif_wv(size_t wavelengthIndex, BSDFIntegrator & results); }; } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/BaseCell.cpp b/src/SingleLayerOptics/src/BaseCell.cpp index b134f92b..615edb1f 100644 --- a/src/SingleLayerOptics/src/BaseCell.cpp +++ b/src/SingleLayerOptics/src/BaseCell.cpp @@ -15,7 +15,9 @@ namespace SingleLayerOptics CBaseCell::CBaseCell(const std::shared_ptr & t_Material, const std::shared_ptr & t_CellDescription, const double rotation) : - m_Material(t_Material), m_CellDescription(t_CellDescription), m_CellRotation(rotation) + m_Material(t_Material), + m_CellDescription(t_CellDescription), + m_CellRotation(rotation) {} void CBaseCell::setSourceData(CSeries & t_SourceData) @@ -56,6 +58,13 @@ namespace SingleLayerOptics return aResults; } + double CBaseCell::T_dir_dir_at_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + return T_dir_dir(t_Side, t_Direction); + } + std::vector CBaseCell::R_dir_dir_band(const Side t_Side, const CBeamDirection & t_Direction) { @@ -71,6 +80,13 @@ namespace SingleLayerOptics return aResults; } + double CBaseCell::R_dir_dir_at_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + return R_dir_dir(t_Side, t_Direction); + } + std::vector CBaseCell::getBandWavelengths() const { assert(m_Material != nullptr); diff --git a/src/SingleLayerOptics/src/BaseCell.hpp b/src/SingleLayerOptics/src/BaseCell.hpp index 9c177f71..e8b2bae7 100644 --- a/src/SingleLayerOptics/src/BaseCell.hpp +++ b/src/SingleLayerOptics/src/BaseCell.hpp @@ -34,17 +34,25 @@ namespace SingleLayerOptics // These dir_dir and dir_dir_band functions are returning only direct portion of the // incoming beam that goes directly through cell without interfering (bouncing off) with // material (Simon) - virtual double T_dir_dir(const FenestrationCommon::Side t_Side, + virtual double T_dir_dir(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); - virtual double R_dir_dir(const FenestrationCommon::Side t_Side, + virtual double R_dir_dir(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); - virtual std::vector T_dir_dir_band(const FenestrationCommon::Side t_Side, + virtual std::vector T_dir_dir_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); - virtual std::vector R_dir_dir_band(const FenestrationCommon::Side t_Side, + virtual double T_dir_dir_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex); + + virtual std::vector R_dir_dir_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); + virtual double R_dir_dir_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex); + std::vector getBandWavelengths() const; virtual void setBandWavelengths(const std::vector & wavelengths); int getBandIndex(double t_Wavelength) const; diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp index 18858ee8..55fdc37f 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp @@ -87,6 +87,38 @@ namespace SingleLayerOptics } } + void CDirectionalBSDFLayer::calcDiffuseDistribution_byWavelength( + const FenestrationCommon::Side aSide, + const CBeamDirection & incomingDirection, + const size_t incomingDirectionIndex, + size_t wavelengthIndex, + BSDFIntegrator & results) + { + std::shared_ptr aCell = cellAsDirectionalDiffuse(); + + const BSDFDirections oDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Outgoing); + + size_t size = oDirections.size(); + + for(size_t outgoingDirectionIndex = 0; outgoingDirectionIndex < size; + ++outgoingDirectionIndex) + { + const CBeamDirection oDirection = oDirections[outgoingDirectionIndex].centerPoint(); + + auto aTau = + aCell->T_dir_dif_by_wavelength(aSide, incomingDirection, oDirection, wavelengthIndex); + auto Ref = + aCell->R_dir_dif_by_wavelength(aSide, incomingDirection, oDirection, wavelengthIndex); + + auto & tau = results.getMatrix(aSide, PropertySimple::T); + auto & rho = results.getMatrix(aSide, PropertySimple::R); + tau(outgoingDirectionIndex, incomingDirectionIndex) += + aTau * diffuseDistributionScalar(outgoingDirectionIndex); + rho(outgoingDirectionIndex, incomingDirectionIndex) += + Ref * diffuseDistributionScalar(outgoingDirectionIndex); + } + } + CDirectionalDiffuseBSDFLayer::CDirectionalDiffuseBSDFLayer( const std::shared_ptr & t_Cell, const BSDFHemisphere & t_Hemisphere) : diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp index 7ff89d4d..05324042 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp @@ -24,6 +24,11 @@ namespace SingleLayerOptics void calcDiffuseDistribution_wv(const FenestrationCommon::Side aSide, const CBeamDirection & incomingDirection, const size_t incomingDirectionIndex) override; + void calcDiffuseDistribution_byWavelength(FenestrationCommon::Side aSide, + const CBeamDirection & incomingDirection, + size_t incomingDirectionIndex, + size_t wavelengthIndex, + BSDFIntegrator & results) override; virtual double diffuseDistributionScalar(size_t outgoingDirection) = 0; }; diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseCell.cpp b/src/SingleLayerOptics/src/DirectionalDiffuseCell.cpp index b646abce..ead0c268 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseCell.cpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseCell.cpp @@ -53,6 +53,21 @@ namespace SingleLayerOptics return result; } + double + CDirectionalDiffuseCell::T_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection, + size_t wavelengthIndex) + { + double cellT = CBaseCell::T_dir_dir(t_Side, t_IncomingDirection); + auto materialTransmittance = m_Material->getBandProperty(FenestrationCommon::Property::T, + t_Side, + wavelengthIndex, + t_IncomingDirection, + t_OutgoingDirection); + return cellT + (1 - cellT) * materialTransmittance; + } + std::vector CDirectionalDiffuseCell::R_dir_dif_band(const FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection, @@ -73,5 +88,17 @@ namespace SingleLayerOptics return result; } + double + CDirectionalDiffuseCell::R_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection, + size_t wavelengthIndex) + { + double cellT = CBaseCell::T_dir_dir(t_Side, t_IncomingDirection); + double cellR = CBaseCell::R_dir_dir(t_Side, t_IncomingDirection); + auto materialValue = m_Material->getBandProperty( + FenestrationCommon::Property::R, t_Side, wavelengthIndex, t_IncomingDirection, t_OutgoingDirection); + return cellR + (1 - cellT) * materialValue; + } } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseCell.hpp b/src/SingleLayerOptics/src/DirectionalDiffuseCell.hpp index 36a27cbb..fc464696 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseCell.hpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseCell.hpp @@ -39,9 +39,19 @@ namespace SingleLayerOptics const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection); + virtual double T_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection, + size_t wavelengthIndex); + virtual std::vector R_dir_dif_band(const FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection); + + virtual double R_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection, + size_t wavelengthIndex); }; } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp b/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp index 2932f3c1..4083fc7b 100644 --- a/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp @@ -36,4 +36,13 @@ namespace SingleLayerOptics // No diffuse calculations are necessary for specular layer. } + void CSpecularBSDFLayer::calcDiffuseDistribution_byWavelength(const FenestrationCommon::Side, + const CBeamDirection &, + const size_t, + size_t, + BSDFIntegrator &) + { + // No diffusion in specular layers + } + } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp b/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp index 56e699cb..1c78fbe8 100644 --- a/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp @@ -1,5 +1,4 @@ -#ifndef SPECULARBSDFLAYER_H -#define SPECULARBSDFLAYER_H +#pragma once #include #include @@ -22,11 +21,17 @@ namespace SingleLayerOptics void calcDiffuseDistribution(FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, size_t t_DirectionIndex) override; + void calcDiffuseDistribution_wv(FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, size_t t_DirectionIndex) override; + + void calcDiffuseDistribution_byWavelength(const FenestrationCommon::Side aSide, + const CBeamDirection & t_Direction, + const size_t t_DirectionIndex, + size_t wavelengthIndex, + BSDFIntegrator & results) override; }; } // namespace SingleLayerOptics -#endif diff --git a/src/SingleLayerOptics/src/SpecularCell.cpp b/src/SingleLayerOptics/src/SpecularCell.cpp index 3176c905..c9a10d6a 100644 --- a/src/SingleLayerOptics/src/SpecularCell.cpp +++ b/src/SingleLayerOptics/src/SpecularCell.cpp @@ -40,6 +40,13 @@ namespace SingleLayerOptics return m_Material->getBandProperties(Property::T, t_Side, t_Direction); } + double CSpecularCell::T_dir_dir_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + return m_Material->getBandProperty(Property::T, t_Side, wavelengthIndex, t_Direction); + } + // Reflectance of specular material over entire material range std::vector CSpecularCell::R_dir_dir_band(const Side t_Side, const CBeamDirection & t_Direction) @@ -60,4 +67,11 @@ namespace SingleLayerOptics return aCell; } + double CSpecularCell::R_dir_dir_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + return m_Material->getBandProperty(Property::R, t_Side, wavelengthIndex, t_Direction); + } + } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/SpecularCell.hpp b/src/SingleLayerOptics/src/SpecularCell.hpp index 7983ca84..415f5093 100644 --- a/src/SingleLayerOptics/src/SpecularCell.hpp +++ b/src/SingleLayerOptics/src/SpecularCell.hpp @@ -39,10 +39,18 @@ namespace SingleLayerOptics std::vector T_dir_dir_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; + double T_dir_dir_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) override; + // Reflectance of specular material over entire wavelength spectrum std::vector R_dir_dir_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; + double R_dir_dir_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) override; + protected: [[nodiscard]] std::shared_ptr getCellAsSpecular() const; }; diff --git a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp index 3d73221b..dfeb7499 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp @@ -77,4 +77,30 @@ namespace SingleLayerOptics } } + void CUniformDiffuseBSDFLayer::calcDiffuseDistribution_byWavelength( + const FenestrationCommon::Side aSide, + const CBeamDirection & t_Direction, + const size_t t_DirectionIndex, + size_t wavelengthIndex, + BSDFIntegrator & results) + { + std::shared_ptr aCell = cellAsUniformDiffuse(); + + const auto aTau = aCell->T_dir_dif_at_wavelength(aSide, t_Direction, wavelengthIndex); + const auto Ref = aCell->R_dir_dif_at_wavelength(aSide, t_Direction, wavelengthIndex); + + const BSDFDirections aDirections = m_BSDFHemisphere.getDirections(BSDFDirection::Incoming); + size_t size = aDirections.size(); + + for(size_t i = 0; i < size; ++i) + { + using ConstantsData::WCE_PI; + + auto & tau = results.getMatrix(aSide, PropertySimple::T); + auto & rho = results.getMatrix(aSide, PropertySimple::R); + tau(i, t_DirectionIndex) += aTau / WCE_PI; + rho(i, t_DirectionIndex) += Ref / WCE_PI; + } + } + } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp index 5a4968eb..915362f9 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp @@ -1,5 +1,4 @@ -#ifndef UniformDiffuseShade_H -#define UniformDiffuseShade_H +#pragma once #include @@ -21,11 +20,16 @@ namespace SingleLayerOptics void calcDiffuseDistribution(FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, size_t t_DirectionIndex) override; + void calcDiffuseDistribution_wv(FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, size_t t_DirectionIndex) override; + + void calcDiffuseDistribution_byWavelength(const FenestrationCommon::Side aSide, + const CBeamDirection & t_Direction, + const size_t t_DirectionIndex, + size_t wavelengthIndex, + BSDFIntegrator & results) override; }; } // namespace SingleLayerOptics - -#endif diff --git a/src/SingleLayerOptics/src/UniformDiffuseCell.cpp b/src/SingleLayerOptics/src/UniformDiffuseCell.cpp index 9d182c6d..2f273790 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseCell.cpp +++ b/src/SingleLayerOptics/src/UniformDiffuseCell.cpp @@ -32,12 +32,26 @@ namespace SingleLayerOptics return getMaterialProperties(Property::T, t_Side, t_Direction); } + double CUniformDiffuseCell::T_dir_dif_at_wavelength(Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + return getMaterialPropertyAtWavelength(Property::T, t_Side, t_Direction, wavelengthIndex); + } + std::vector CUniformDiffuseCell::R_dir_dif_band(const Side t_Side, const CBeamDirection & t_Direction) { return getMaterialProperties(Property::R, t_Side, t_Direction); } + double CUniformDiffuseCell::R_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + return getMaterialPropertyAtWavelength(Property::R, t_Side, t_Direction, wavelengthIndex); + } + double CUniformDiffuseCell::getMaterialProperty(const Property t_Property, const Side t_Side, const CBeamDirection & t_Direction) @@ -52,10 +66,21 @@ namespace SingleLayerOptics std::vector aMaterialProperties = m_Material->getBandProperties(t_Property, t_Side); std::vector aProperty; aProperty.reserve(aMaterialProperties.size()); - for(const auto & materialProperty: aMaterialProperties) + for(const auto & materialProperty : aMaterialProperties) { aProperty.push_back(materialCoverFraction * materialProperty); } return aProperty; } + + double CUniformDiffuseCell::getMaterialPropertyAtWavelength( + const FenestrationCommon::Property t_Property, + const FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + double materialCoverFraction = 1 - T_dir_dir(t_Side, t_Direction); + return materialCoverFraction + * m_Material->getBandProperty(t_Property, t_Side, wavelengthIndex); + } } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/src/UniformDiffuseCell.hpp b/src/SingleLayerOptics/src/UniformDiffuseCell.hpp index c50f56c6..edf18c99 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseCell.hpp +++ b/src/SingleLayerOptics/src/UniformDiffuseCell.hpp @@ -40,16 +40,30 @@ namespace SingleLayerOptics virtual std::vector T_dir_dif_band(const FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); - virtual std::vector R_dir_dif_band(const FenestrationCommon::Side t_Side, + virtual double T_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex); + + virtual std::vector R_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); + virtual double R_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex); + private: double getMaterialProperty(const FenestrationCommon::Property t_Property, const FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); + std::vector getMaterialProperties(const FenestrationCommon::Property t_Property, const FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); + + double getMaterialPropertyAtWavelength(FenestrationCommon::Property t_Property, + FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex); }; } // namespace SingleLayerOptics diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp index beefa6cb..f2b0fe4c 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp @@ -269,3 +269,18 @@ TEST_F(TestSpecularLayer_102, TestSpecular1) EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-6); } } + +TEST_F(TestSpecularLayer_102, WavelengthByWavelengthResults) +{ + std::shared_ptr aLayer = getLayer(); + + auto aResults = aLayer->getWavelengthResults(); + + constexpr size_t wlIndex{5u}; + auto result = aLayer->getResultsAtWavelength(wlIndex); + + const auto test1 = aResults[wlIndex].DiffDiff(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); + const auto test2 = result.DiffDiff(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); + + EXPECT_NEAR(test1, test2, 1e-6); +} From daa1c9ab623d89e19fdddf68eb9924b13e128a5d Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 10:36:16 -0700 Subject: [PATCH 62/81] Woven cell at wavelength with test --- src/SingleLayerOptics/src/BSDFLayer.cpp | 1 + src/SingleLayerOptics/src/WovenCell.cpp | 29 ++++++++++++++++++- src/SingleLayerOptics/src/WovenCell.hpp | 15 ++++++++-- .../tst/units/SpecularLayer_102.unit.cpp | 8 ++--- .../units/WovenShadeMultiWavelength.unit.cpp | 23 +++++++++++++++ 5 files changed, 67 insertions(+), 9 deletions(-) diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index 9abeaa6b..a633d01b 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -59,6 +59,7 @@ namespace SingleLayerOptics { BSDFIntegrator results{m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)}; calculate_dir_dir_wl(wavelengthIndex, results); + calculate_dir_dif_wv(wavelengthIndex, results); return results; } diff --git a/src/SingleLayerOptics/src/WovenCell.cpp b/src/SingleLayerOptics/src/WovenCell.cpp index 1ea91b8c..e67177c5 100644 --- a/src/SingleLayerOptics/src/WovenCell.cpp +++ b/src/SingleLayerOptics/src/WovenCell.cpp @@ -13,7 +13,6 @@ using namespace FenestrationCommon; namespace SingleLayerOptics { - //////////////////////////////////////////////////////////////////////////////////////////// // CWovenCell //////////////////////////////////////////////////////////////////////////////////////////// @@ -51,6 +50,16 @@ namespace SingleLayerOptics return T_material; } + double CWovenCell::T_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + auto Tmaterial{ + CUniformDiffuseCell::T_dir_dif_at_wavelength(t_Side, t_Direction, wavelengthIndex)}; + auto Tsct{Tscatter_at_wavelength(t_Side, t_Direction, wavelengthIndex)}; + return Tmaterial + Tsct; + } + std::vector CWovenCell::R_dir_dif_band(const Side t_Side, const CBeamDirection & t_Direction) { @@ -64,6 +73,15 @@ namespace SingleLayerOptics return R_material; } + double CWovenCell::R_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + auto RMaterial{CUniformDiffuseCell::R_dir_dif_at_wavelength(t_Side, t_Direction, wavelengthIndex)}; + auto Tsct{Tscatter_at_wavelength(t_Side, t_Direction, wavelengthIndex)}; + return RMaterial - Tsct; + } + std::shared_ptr CWovenCell::getCellAsWoven() const { if(std::dynamic_pointer_cast(m_CellDescription) == nullptr) @@ -99,6 +117,15 @@ namespace SingleLayerOptics return aTsct; } + double CWovenCell::Tscatter_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + auto RScatterMat{ + m_Material->getBandProperty(Property::R, oppositeSide(t_Side), wavelengthIndex)}; + return Tscatter(t_Direction, RScatterMat); + } + double CWovenCell::Tscatter(const CBeamDirection & t_Direction, const double Rmat) const { double Tsct{0}; diff --git a/src/SingleLayerOptics/src/WovenCell.hpp b/src/SingleLayerOptics/src/WovenCell.hpp index e540ab51..a92a137a 100644 --- a/src/SingleLayerOptics/src/WovenCell.hpp +++ b/src/SingleLayerOptics/src/WovenCell.hpp @@ -16,7 +16,7 @@ namespace SingleLayerOptics public: CWovenCell(const std::shared_ptr & t_MaterialProperties, const std::shared_ptr & t_Cell); - + double T_dir_dif(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; double R_dir_dif(FenestrationCommon::Side t_Side, @@ -24,16 +24,25 @@ namespace SingleLayerOptics std::vector T_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; + double T_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) override; + std::vector R_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; + double R_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) override; private: std::shared_ptr getCellAsWoven() const; - double Tscatter_single(FenestrationCommon::Side t_Side, - const CBeamDirection & t_Direction); + double Tscatter_single(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); std::vector Tscatter_range(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); + double Tscatter_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex); // Calculates scattered part of reflection from woven double Tscatter(const CBeamDirection & t_Direction, double Rmat) const; diff --git a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp index f2b0fe4c..a92166db 100644 --- a/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp +++ b/src/SingleLayerOptics/tst/units/SpecularLayer_102.unit.cpp @@ -274,13 +274,11 @@ TEST_F(TestSpecularLayer_102, WavelengthByWavelengthResults) { std::shared_ptr aLayer = getLayer(); - auto aResults = aLayer->getWavelengthResults(); - constexpr size_t wlIndex{5u}; auto result = aLayer->getResultsAtWavelength(wlIndex); - const auto test1 = aResults[wlIndex].DiffDiff(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); - const auto test2 = result.DiffDiff(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); + const auto diffDiff = result.DiffDiff(FenestrationCommon::Side::Front, FenestrationCommon::PropertySimple::T); + const auto correct{0.167105}; - EXPECT_NEAR(test1, test2, 1e-6); + EXPECT_NEAR(diffDiff, correct, 1e-6); } diff --git a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp index 1bf487f4..3a705125 100644 --- a/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp +++ b/src/SingleLayerOptics/tst/units/WovenShadeMultiWavelength.unit.cpp @@ -228,3 +228,26 @@ TEST_F(TestWovenShadeMultiWavelength, TestWovenMultiWavelength) EXPECT_NEAR(correctResults[i], aRf(i, i), 1e-5); } } + +TEST_F(TestWovenShadeMultiWavelength, AtWavelength) +{ + std::shared_ptr aLayer = getLayer(); + + constexpr size_t wavelengthIndex{3u}; + auto aResults = aLayer->getResultsAtWavelength(wavelengthIndex); + + std::vector correctResults = { + 5.786283, 6.076508, 6.075762, 6.060038, 6.075762, 6.076508, 6.075762, 6.060038, 6.075762, + 5.1071, 5.132581, 5.008355, 4.795191, 5.008355, 5.132581, 5.1071, 5.132581, 5.008355, + 4.795191, 5.008355, 5.132581, 3.786365, 3.977287, 3.388986, 1.346054, 3.388986, 3.977287, + 3.786365, 3.977287, 3.388986, 1.346054, 3.388986, 3.977287, 0.03677, 0.013011, 0.03677, + 0.013011, 0.03677, 0.013011, 0.03677, 0.013011}; + + const auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); + + EXPECT_EQ(correctResults.size(), aT.size()); + for(size_t i = 0; i < correctResults.size(); ++i) + { + EXPECT_NEAR(correctResults[i], aT(i, i), 1e-6); + } +} \ No newline at end of file From 266ff3087357fff9317b80779ebfacd8143a027e Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 10:50:03 -0700 Subject: [PATCH 63/81] Perforated circular shade wavelength index test --- .../units/CircularPerforatedShade1.unit.cpp | 212 ++++-------------- 1 file changed, 41 insertions(+), 171 deletions(-) diff --git a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp index 8491d9cb..c97f99a9 100644 --- a/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/CircularPerforatedShade1.unit.cpp @@ -51,61 +51,25 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) BSDFIntegrator aResults = aShade->getResults(); const double tauDiff = aResults.DiffDiff(Side::Front, PropertySimple::T); - EXPECT_NEAR(0.32084455059221467, tauDiff, 1e-6); + EXPECT_NEAR(0.320845, tauDiff, 1e-6); const double RfDiff = aResults.DiffDiff(Side::Front, PropertySimple::R); - EXPECT_NEAR(0.63670823381979202, RfDiff, 1e-6); + EXPECT_NEAR(0.636708, RfDiff, 1e-6); const double RbDiff = aResults.DiffDiff(Side::Back, PropertySimple::R); - EXPECT_NEAR(0.56030324576141499, RbDiff, 1e-6); + EXPECT_NEAR(0.560303, RbDiff, 1e-6); auto aT = aResults.getMatrix(Side::Front, PropertySimple::T); const auto size = aT.size(); // Test diagonal - std::vector correctResults; - correctResults.push_back(3.370933); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(3.282731); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.649459); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(2.006498); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); + std::vector correctResults{ + 3.370933, 3.282731, 3.282731, 3.282731, 3.282731, 3.282731, 3.282731, 3.282731, 3.282731, + 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, 2.649459, + 2.649459, 2.649459, 2.649459, 2.006498, 2.006498, 2.006498, 2.006498, 2.006498, 2.006498, + 2.006498, 2.006498, 2.006498, 2.006498, 2.006498, 2.006498, 0.063662, 0.063662, 0.063662, + 0.063662, 0.063662, 0.063662, 0.063662, 0.063662}; std::vector calculatedResults; for(size_t i = 0; i < size; ++i) @@ -120,48 +84,12 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) } // Test first row - correctResults.clear(); - correctResults.push_back(3.370933); - correctResults.push_back(0.048978); - correctResults.push_back(0.048978); - correctResults.push_back(0.048978); - correctResults.push_back(0.048978); - correctResults.push_back(0.048978); - correctResults.push_back(0.048978); - correctResults.push_back(0.048978); - correctResults.push_back(0.048978); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.050934); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.054099); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); - correctResults.push_back(0.063662); + correctResults = {3.370933, 0.048978, 0.048978, 0.048978, 0.048978, 0.048978, 0.048978, + 0.048978, 0.048978, 0.050934, 0.050934, 0.050934, 0.050934, 0.050934, + 0.050934, 0.050934, 0.050934, 0.050934, 0.050934, 0.050934, 0.050934, + 0.054099, 0.054099, 0.054099, 0.054099, 0.054099, 0.054099, 0.054099, + 0.054099, 0.054099, 0.054099, 0.054099, 0.054099, 0.063662, 0.063662, + 0.063662, 0.063662, 0.063662, 0.063662, 0.063662, 0.063662}; calculatedResults.clear(); for(size_t i = 0; i < size; ++i) @@ -178,48 +106,12 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) // Test first row for reflectance matrix auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - correctResults.push_back(0.177733); - correctResults.push_back(0.183667); - correctResults.push_back(0.183667); - correctResults.push_back(0.183667); - correctResults.push_back(0.183667); - correctResults.push_back(0.183667); - correctResults.push_back(0.183667); - correctResults.push_back(0.183667); - correctResults.push_back(0.183667); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.191002); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.202870); - correctResults.push_back(0.238732); - correctResults.push_back(0.238732); - correctResults.push_back(0.238732); - correctResults.push_back(0.238732); - correctResults.push_back(0.238732); - correctResults.push_back(0.238732); - correctResults.push_back(0.238732); - correctResults.push_back(0.238732); + correctResults = {0.177733, 0.183667, 0.183667, 0.183667, 0.183667, 0.183667, 0.183667, + 0.183667, 0.183667, 0.191002, 0.191002, 0.191002, 0.191002, 0.191002, + 0.191002, 0.191002, 0.191002, 0.191002, 0.191002, 0.191002, 0.191002, + 0.202870, 0.202870, 0.202870, 0.202870, 0.202870, 0.202870, 0.202870, + 0.202870, 0.202870, 0.202870, 0.202870, 0.202870, 0.238732, 0.238732, + 0.238732, 0.238732, 0.238732, 0.238732, 0.238732, 0.238732}; calculatedResults.clear(); for(size_t i = 0; i < size; ++i) @@ -236,48 +128,12 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) // Test first row for reflectance matrix auto aRb = aResults.getMatrix(Side::Back, PropertySimple::R); - correctResults.clear(); - correctResults.push_back(0.156405); - correctResults.push_back(0.161627); - correctResults.push_back(0.161627); - correctResults.push_back(0.161627); - correctResults.push_back(0.161627); - correctResults.push_back(0.161627); - correctResults.push_back(0.161627); - correctResults.push_back(0.161627); - correctResults.push_back(0.161627); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.168082); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.178526); - correctResults.push_back(0.210085); - correctResults.push_back(0.210085); - correctResults.push_back(0.210085); - correctResults.push_back(0.210085); - correctResults.push_back(0.210085); - correctResults.push_back(0.210085); - correctResults.push_back(0.210085); - correctResults.push_back(0.210085); + correctResults = {0.156405, 0.161627, 0.161627, 0.161627, 0.161627, 0.161627, 0.161627, + 0.161627, 0.161627, 0.168082, 0.168082, 0.168082, 0.168082, 0.168082, + 0.168082, 0.168082, 0.168082, 0.168082, 0.168082, 0.168082, 0.168082, + 0.178526, 0.178526, 0.178526, 0.178526, 0.178526, 0.178526, 0.178526, + 0.178526, 0.178526, 0.178526, 0.178526, 0.178526, 0.210085, 0.210085, + 0.210085, 0.210085, 0.210085, 0.210085, 0.210085, 0.210085}; calculatedResults.clear(); for(size_t i = 0; i < size; ++i) @@ -291,3 +147,17 @@ TEST_F(TestCircularPerforatedShade1, TestSolarProperties) EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); } } + +TEST_F(TestCircularPerforatedShade1, AtWavelength) +{ + + std::shared_ptr aShade = GetShade(); + + constexpr size_t wavelengthIndex{0u}; + auto aResults{aShade->getResultsAtWavelength(wavelengthIndex)}; + + const auto correct{0.320845}; + const auto result{aResults.DiffDiff(Side::Front, PropertySimple::T)}; + + EXPECT_NEAR(correct, result, 1e-6); +} \ No newline at end of file From 25fbf05ee338f1844bbbfd343532965018855d8e Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 10:54:35 -0700 Subject: [PATCH 64/81] Perforated rectangular test --- .../RectangularPerforatedShade1.unit.cpp | 110 +++++------------- 1 file changed, 26 insertions(+), 84 deletions(-) diff --git a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp index 603993ca..e6077622 100644 --- a/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/RectangularPerforatedShade1.unit.cpp @@ -70,48 +70,12 @@ TEST_F(TestRectangularPerforatedShade1, TestSolarProperties) // Test only diagonal of transmittance matrix const size_t size = aT.size(); - std::vector correctResults; - correctResults.push_back(0.722625); - correctResults.push_back(0.731048); - correctResults.push_back(0.728881); - correctResults.push_back(0.754961); - correctResults.push_back(0.728881); - correctResults.push_back(0.731048); - correctResults.push_back(0.728881); - correctResults.push_back(0.754961); - correctResults.push_back(0.728881); - correctResults.push_back(0.622917); - correctResults.push_back(0.614362); - correctResults.push_back(0.632505); - correctResults.push_back(0.672486); - correctResults.push_back(0.632505); - correctResults.push_back(0.614362); - correctResults.push_back(0.622917); - correctResults.push_back(0.614362); - correctResults.push_back(0.632505); - correctResults.push_back(0.672486); - correctResults.push_back(0.632505); - correctResults.push_back(0.614362); - correctResults.push_back(0.534246); - correctResults.push_back(0.523031); - correctResults.push_back(0.557403); - correctResults.push_back(0.628150); - correctResults.push_back(0.557403); - correctResults.push_back(0.523031); - correctResults.push_back(0.534246); - correctResults.push_back(0.523031); - correctResults.push_back(0.557403); - correctResults.push_back(0.628150); - correctResults.push_back(0.557403); - correctResults.push_back(0.523031); - correctResults.push_back(0.146104); - correctResults.push_back(0.219651); - correctResults.push_back(0.416249); - correctResults.push_back(0.219651); - correctResults.push_back(0.146104); - correctResults.push_back(0.219651); - correctResults.push_back(0.416249); - correctResults.push_back(0.219651); + std::vector correctResults{ + 0.722625, 0.731048, 0.728881, 0.754961, 0.728881, 0.731048, 0.728881, 0.754961, 0.728881, + 0.622917, 0.614362, 0.632505, 0.672486, 0.632505, 0.614362, 0.622917, 0.614362, 0.632505, + 0.672486, 0.632505, 0.614362, 0.534246, 0.523031, 0.557403, 0.628150, 0.557403, 0.523031, + 0.534246, 0.523031, 0.557403, 0.628150, 0.557403, 0.523031, 0.146104, 0.219651, 0.416249, + 0.219651, 0.146104, 0.219651, 0.416249, 0.219651}; std::vector calculatedResults; for(size_t i = 0; i < size; ++i) @@ -127,48 +91,12 @@ TEST_F(TestRectangularPerforatedShade1, TestSolarProperties) auto aRf = aResults.getMatrix(Side::Front, PropertySimple::R); - correctResults.clear(); - correctResults.push_back(0.210438); - correctResults.push_back(0.211198); - correctResults.push_back(0.211233); - correctResults.push_back(0.210818); - correctResults.push_back(0.211233); - correctResults.push_back(0.211198); - correctResults.push_back(0.211233); - correctResults.push_back(0.210818); - correctResults.push_back(0.211233); - correctResults.push_back(0.212138); - correctResults.push_back(0.212284); - correctResults.push_back(0.211973); - correctResults.push_back(0.211288); - correctResults.push_back(0.211973); - correctResults.push_back(0.212284); - correctResults.push_back(0.212138); - correctResults.push_back(0.212284); - correctResults.push_back(0.211973); - correctResults.push_back(0.211288); - correctResults.push_back(0.211973); - correctResults.push_back(0.212284); - correctResults.push_back(0.213658); - correctResults.push_back(0.213850); - correctResults.push_back(0.213261); - correctResults.push_back(0.212048); - correctResults.push_back(0.213261); - correctResults.push_back(0.213850); - correctResults.push_back(0.213658); - correctResults.push_back(0.213850); - correctResults.push_back(0.213261); - correctResults.push_back(0.212048); - correctResults.push_back(0.213261); - correctResults.push_back(0.213850); - correctResults.push_back(0.220182); - correctResults.push_back(0.218856); - correctResults.push_back(0.215310); - correctResults.push_back(0.218856); - correctResults.push_back(0.220182); - correctResults.push_back(0.218856); - correctResults.push_back(0.215310); - correctResults.push_back(0.218856); + correctResults = {0.210438, 0.211198, 0.211233, 0.210818, 0.211233, 0.211198, 0.211233, + 0.210818, 0.211233, 0.212138, 0.212284, 0.211973, 0.211288, 0.211973, + 0.212284, 0.212138, 0.212284, 0.211973, 0.211288, 0.211973, 0.212284, + 0.213658, 0.213850, 0.213261, 0.212048, 0.213261, 0.213850, 0.213658, + 0.213850, 0.213261, 0.212048, 0.213261, 0.213850, 0.220182, 0.218856, + 0.215310, 0.218856, 0.220182, 0.218856, 0.215310, 0.218856}; calculatedResults.clear(); for(size_t i = 0; i < size; ++i) @@ -182,3 +110,17 @@ TEST_F(TestRectangularPerforatedShade1, TestSolarProperties) EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); } } + +TEST_F(TestRectangularPerforatedShade1, AtWavelength) +{ + + std::shared_ptr aShade = GetShade(); + + constexpr size_t wavelengthIndex{0u}; + auto aResults{aShade->getResultsAtWavelength(wavelengthIndex)}; + + const auto correct{0.0418763}; + const auto result{aResults.DiffDiff(Side::Front, PropertySimple::T)}; + + EXPECT_NEAR(correct, result, 1e-6); +} From 22810da3f5684e59a346bb35e3fd50c97afc29b6 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 10:58:48 -0700 Subject: [PATCH 65/81] Perfectly diffuse at wavelength tests --- .../tst/units/PerfectDiffuseShade1.unit.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp index dc19b60c..dfda5fa3 100644 --- a/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/PerfectDiffuseShade1.unit.cpp @@ -88,3 +88,17 @@ TEST_F(TestPerfectDiffuseShade1, TestSolarProperties) EXPECT_NEAR(correctResults[i], calculatedResults[i], 1e-5); } } + +TEST_F(TestPerfectDiffuseShade1, AtWavelength) +{ + + std::shared_ptr aShade = GetShade(); + + constexpr size_t wavelengthIndex{0u}; + auto aResults{aShade->getResultsAtWavelength(wavelengthIndex)}; + + const auto correct{0.55}; + const auto result{aResults.DiffDiff(Side::Front, PropertySimple::R)}; + + EXPECT_NEAR(correct, result, 1e-6); +} \ No newline at end of file From daf5a1b4c3fde938aac1dbd03bbfe15db53f7ebe Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 11:15:32 -0700 Subject: [PATCH 66/81] Directional venetian at wavelength fix and unit test --- src/SingleLayerOptics/src/VenetianCell.cpp | 94 +++++++++++++++++-- src/SingleLayerOptics/src/VenetianCell.hpp | 20 ++++ .../VenetianDirectionalShadeFlat0_1.unit.cpp | 15 +++ 3 files changed, 123 insertions(+), 6 deletions(-) diff --git a/src/SingleLayerOptics/src/VenetianCell.cpp b/src/SingleLayerOptics/src/VenetianCell.cpp index ecdec288..174be771 100644 --- a/src/SingleLayerOptics/src/VenetianCell.cpp +++ b/src/SingleLayerOptics/src/VenetianCell.cpp @@ -121,7 +121,12 @@ namespace SingleLayerOptics // CVenetianCellEnergy //////////////////////////////////////////////////////////////////////////////////////////// CVenetianCellEnergy::CVenetianCellEnergy() : - m_Cell(nullptr), m_Tf(0), m_Tb(0), m_Rf(0), m_Rb(0), m_Energy(nullptr) + m_Cell(nullptr), + m_Tf(0), + m_Tb(0), + m_Rf(0), + m_Rb(0), + m_Energy(nullptr) {} CVenetianCellEnergy::CVenetianCellEnergy( @@ -130,7 +135,11 @@ namespace SingleLayerOptics const double Tb, const double Rf, const double Rb) : - m_Cell(t_Cell), m_Tf(Tf), m_Tb(Tb), m_Rf(Rf), m_Rb(Rb) + m_Cell(t_Cell), + m_Tf(Tf), + m_Tb(Tb), + m_Rf(Rf), + m_Rb(Rb) { createSlatsMapping(); formEnergyMatrix(); @@ -653,6 +662,19 @@ namespace SingleLayerOptics return aProperties; } + double CVenetianCell::T_dir_dir_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + if(m_CellRotation != 0) + { + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->T_dir_dir( + t_Direction.rotate(m_CellRotation)); + } + + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->T_dir_dir(t_Direction); + } + double CVenetianCell::T_dir_dif(const Side t_Side, const CBeamDirection & t_Direction) { std::shared_ptr aCell = m_Energy.getCell(t_Side); @@ -683,6 +705,19 @@ namespace SingleLayerOptics return aProperties; } + double CVenetianCell::T_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + if(m_CellRotation != 0) + { + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->T_dir_dif( + t_Direction.rotate(m_CellRotation)); + } + + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->T_dir_dif(t_Direction); + } + double CVenetianCell::R_dir_dif(const Side t_Side, const CBeamDirection & t_Direction) { std::shared_ptr aCell = m_Energy.getCell(t_Side); @@ -713,6 +748,19 @@ namespace SingleLayerOptics return aProperties; } + double CVenetianCell::R_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) + { + if(m_CellRotation != 0) + { + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->R_dir_dif( + t_Direction.rotate(m_CellRotation)); + } + + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->R_dir_dif(t_Direction); + } + double CVenetianCell::T_dir_dif(const Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) @@ -738,8 +786,9 @@ namespace SingleLayerOptics if(m_CellRotation != 0) { aProperties.push_back(aCell->T_dir_dir(t_IncomingDirection.rotate(m_CellRotation), - t_OutgoingDirection.rotate(m_CellRotation))); - } else + t_OutgoingDirection.rotate(m_CellRotation))); + } + else { aProperties.push_back(aCell->T_dir_dir(t_IncomingDirection, t_OutgoingDirection)); } @@ -747,6 +796,22 @@ namespace SingleLayerOptics return aProperties; } + double CVenetianCell::T_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection, + size_t wavelengthIndex) + { + m_EnergiesBand[wavelengthIndex].getCell(t_Side); + if(m_CellRotation != 0) + { + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->T_dir_dir( + t_IncomingDirection.rotate(m_CellRotation), + t_OutgoingDirection.rotate(m_CellRotation)); + } + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->T_dir_dir(t_IncomingDirection, + t_OutgoingDirection); + } + double CVenetianCell::R_dir_dif(const Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) @@ -773,15 +838,32 @@ namespace SingleLayerOptics { aProperties.push_back(aCell->R_dir_dir(t_IncomingDirection.rotate(m_CellRotation), t_OutgoingDirection.rotate(m_CellRotation))); - } else + } + else { aProperties.push_back(aCell->R_dir_dir(t_IncomingDirection, t_OutgoingDirection)); } - } return aProperties; } + double CVenetianCell::R_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection, + size_t wavelengthIndex) + { + m_EnergiesBand[wavelengthIndex].getCell(t_Side); + if(m_CellRotation != 0) + { + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->R_dir_dir( + t_IncomingDirection.rotate(m_CellRotation), + t_OutgoingDirection.rotate(m_CellRotation)); + } + + return m_EnergiesBand[wavelengthIndex].getCell(t_Side)->R_dir_dir(t_IncomingDirection, + t_OutgoingDirection); + } + double CVenetianCell::T_dif_dif(const Side t_Side) { std::shared_ptr aCell = m_Energy.getCell(t_Side); diff --git a/src/SingleLayerOptics/src/VenetianCell.hpp b/src/SingleLayerOptics/src/VenetianCell.hpp index ceb3665f..a6843b8d 100644 --- a/src/SingleLayerOptics/src/VenetianCell.hpp +++ b/src/SingleLayerOptics/src/VenetianCell.hpp @@ -200,9 +200,14 @@ namespace SingleLayerOptics double T_dir_dir(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; + std::vector T_dir_dir_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; + double T_dir_dir_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) override; + ///////////////////////////////////////////////////////////////////////////////////////////// // Uniform diffuse components ///////////////////////////////////////////////////////////////////////////////////////////// @@ -210,10 +215,17 @@ namespace SingleLayerOptics const CBeamDirection & t_Direction) override; std::vector T_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; + double T_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) override; + double R_dir_dif(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; std::vector R_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction) override; + double R_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, + const CBeamDirection & t_Direction, + size_t wavelengthIndex) override; ///////////////////////////////////////////////////////////////////////////////////////////// // Directional diffuse components @@ -229,10 +241,18 @@ namespace SingleLayerOptics std::vector T_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) override; + double T_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection, + size_t wavelengthIndex) override; std::vector R_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) override; + double R_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + const CBeamDirection & t_IncomingDirection, + const CBeamDirection & t_OutgoingDirection, + size_t wavelengthIndex) override; // Functions specific only for Venetian cell. Diffuse to diffuse component based only on // view factors diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp index 8cc70e83..b368f2cb 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp @@ -181,3 +181,18 @@ TEST_F(TestVenetianDirectionalShadeFlat0_1, TestVenetian1) EXPECT_NEAR(correctResults[i], aRf(i, i), 1e-5); } } + +TEST_F(TestVenetianDirectionalShadeFlat0_1, AtWavelength) +{ + + std::shared_ptr aShade = GetShade(); + + constexpr size_t wavelengthIndex{0u}; + auto aResults{aShade->getResultsAtWavelength(wavelengthIndex)}; + auto test{aShade->getWavelengthResults()}; + + const auto correct{test[wavelengthIndex].DiffDiff(Side::Front, PropertySimple::T)}; + const auto result{aResults.DiffDiff(Side::Front, PropertySimple::T)}; + + EXPECT_NEAR(correct, result, 1e-6); +} \ No newline at end of file From 653865e1bd179ddf552512a9609be23c6639073f Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 11:20:42 -0700 Subject: [PATCH 67/81] Uniform venetian at wavelenght with unit test --- src/SingleLayerOptics/src/VenetianCell.hpp | 4 ++-- .../units/VenetianDirectionalShadeFlat0_1.unit.cpp | 3 +-- .../tst/units/VenetianUniformShadeFlat0_1.unit.cpp | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/SingleLayerOptics/src/VenetianCell.hpp b/src/SingleLayerOptics/src/VenetianCell.hpp index a6843b8d..d841cbbb 100644 --- a/src/SingleLayerOptics/src/VenetianCell.hpp +++ b/src/SingleLayerOptics/src/VenetianCell.hpp @@ -241,7 +241,7 @@ namespace SingleLayerOptics std::vector T_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) override; - double T_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + double T_dir_dif_by_wavelength(FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection, size_t wavelengthIndex) override; @@ -249,7 +249,7 @@ namespace SingleLayerOptics std::vector R_dir_dif_band(FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) override; - double R_dir_dif_by_wavelength(const FenestrationCommon::Side t_Side, + double R_dir_dif_by_wavelength(FenestrationCommon::Side t_Side, const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection, size_t wavelengthIndex) override; diff --git a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp index b368f2cb..7d6eee03 100644 --- a/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianDirectionalShadeFlat0_1.unit.cpp @@ -189,9 +189,8 @@ TEST_F(TestVenetianDirectionalShadeFlat0_1, AtWavelength) constexpr size_t wavelengthIndex{0u}; auto aResults{aShade->getResultsAtWavelength(wavelengthIndex)}; - auto test{aShade->getWavelengthResults()}; - const auto correct{test[wavelengthIndex].DiffDiff(Side::Front, PropertySimple::T)}; + const auto correct{0.446498}; const auto result{aResults.DiffDiff(Side::Front, PropertySimple::T)}; EXPECT_NEAR(correct, result, 1e-6); diff --git a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp index e57433e9..19b547f9 100644 --- a/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp +++ b/src/SingleLayerOptics/tst/units/VenetianUniformShadeFlat0_1.unit.cpp @@ -280,3 +280,17 @@ TEST_F(TestVenetianUniformShadeFlat0_1, TestVenetian1) EXPECT_NEAR(correctResults[i], aRb(i, i), 1e-5); } } + +TEST_F(TestVenetianUniformShadeFlat0_1, AtWavelength) +{ + + std::shared_ptr aShade = GetShade(); + + constexpr size_t wavelengthIndex{0u}; + auto aResults{aShade->getResultsAtWavelength(wavelengthIndex)}; + + const auto correct{0.650940}; + const auto result{aResults.DiffDiff(Side::Front, PropertySimple::T)}; + + EXPECT_NEAR(correct, result, 1e-6); +} \ No newline at end of file From e90e7fb46dc20190d217d271fa2887bbbd52796c Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 11:30:51 -0700 Subject: [PATCH 68/81] VenetianCell wavelength function removal of duplication code. --- src/SingleLayerOptics/src/VenetianCell.cpp | 60 +++++----------------- 1 file changed, 12 insertions(+), 48 deletions(-) diff --git a/src/SingleLayerOptics/src/VenetianCell.cpp b/src/SingleLayerOptics/src/VenetianCell.cpp index 174be771..1dc4a68d 100644 --- a/src/SingleLayerOptics/src/VenetianCell.cpp +++ b/src/SingleLayerOptics/src/VenetianCell.cpp @@ -646,19 +646,11 @@ namespace SingleLayerOptics { size_t size = m_EnergiesBand.size(); std::vector aProperties; + aProperties.reserve(size); for(size_t i = 0; i < size; ++i) { - CVenetianCellEnergy aCell = *m_EnergiesBand[i].getCell(t_Side); - if(m_CellRotation != 0) - { - aProperties.push_back(aCell.T_dir_dir(t_Direction.rotate(m_CellRotation))); - } - else - { - aProperties.push_back(aCell.T_dir_dir(t_Direction)); - } + aProperties.push_back(T_dir_dir_at_wavelength(t_Side, t_Direction, i)); } - return aProperties; } @@ -690,17 +682,10 @@ namespace SingleLayerOptics { size_t size = m_EnergiesBand.size(); std::vector aProperties; + aProperties.reserve(size); for(size_t i = 0; i < size; ++i) { - CVenetianCellEnergy aCell = *m_EnergiesBand[i].getCell(t_Side); - if(m_CellRotation != 0) - { - aProperties.push_back(aCell.T_dir_dif(t_Direction.rotate(m_CellRotation))); - } - else - { - aProperties.push_back(aCell.T_dir_dif(t_Direction)); - } + aProperties.push_back(T_dir_dif_at_wavelength(t_Side, t_Direction, i)); } return aProperties; } @@ -733,17 +718,10 @@ namespace SingleLayerOptics { size_t size = m_EnergiesBand.size(); std::vector aProperties; + aProperties.reserve(size); for(size_t i = 0; i < size; ++i) { - std::shared_ptr aCell = m_EnergiesBand[i].getCell(t_Side); - if(m_CellRotation != 0) - { - aProperties.push_back(aCell->R_dir_dif(t_Direction.rotate(m_CellRotation))); - } - else - { - aProperties.push_back(aCell->R_dir_dif(t_Direction)); - } + aProperties.push_back(R_dir_dif_at_wavelength(t_Side, t_Direction, i)); } return aProperties; } @@ -780,18 +758,11 @@ namespace SingleLayerOptics { size_t size = m_EnergiesBand.size(); std::vector aProperties; + aProperties.reserve(size); for(size_t i = 0; i < size; ++i) { - std::shared_ptr aCell = m_EnergiesBand[i].getCell(t_Side); - if(m_CellRotation != 0) - { - aProperties.push_back(aCell->T_dir_dir(t_IncomingDirection.rotate(m_CellRotation), - t_OutgoingDirection.rotate(m_CellRotation))); - } - else - { - aProperties.push_back(aCell->T_dir_dir(t_IncomingDirection, t_OutgoingDirection)); - } + aProperties.push_back( + T_dir_dif_by_wavelength(t_Side, t_IncomingDirection, t_OutgoingDirection, i)); } return aProperties; } @@ -831,18 +802,11 @@ namespace SingleLayerOptics { size_t size = m_EnergiesBand.size(); std::vector aProperties; + aProperties.reserve(size); for(size_t i = 0; i < size; ++i) { - std::shared_ptr aCell = m_EnergiesBand[i].getCell(t_Side); - if(m_CellRotation != 0) - { - aProperties.push_back(aCell->R_dir_dir(t_IncomingDirection.rotate(m_CellRotation), - t_OutgoingDirection.rotate(m_CellRotation))); - } - else - { - aProperties.push_back(aCell->R_dir_dir(t_IncomingDirection, t_OutgoingDirection)); - } + aProperties.push_back( + R_dir_dif_by_wavelength(t_Side, t_IncomingDirection, t_OutgoingDirection, i)); } return aProperties; } From 8bc1b6c46acf3a6ee3bd7b77d15135e097991a7b Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 11:38:51 -0700 Subject: [PATCH 69/81] Woven code duplication removal --- src/SingleLayerOptics/src/WovenCell.cpp | 38 ++++++++----------------- src/SingleLayerOptics/src/WovenCell.hpp | 2 -- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/src/SingleLayerOptics/src/WovenCell.cpp b/src/SingleLayerOptics/src/WovenCell.cpp index e67177c5..5ed2c7fa 100644 --- a/src/SingleLayerOptics/src/WovenCell.cpp +++ b/src/SingleLayerOptics/src/WovenCell.cpp @@ -40,14 +40,14 @@ namespace SingleLayerOptics std::vector CWovenCell::T_dir_dif_band(const Side t_Side, const CBeamDirection & t_Direction) { - std::vector T_material = CUniformDiffuseCell::T_dir_dif_band(t_Side, t_Direction); - std::vector Tsct = Tscatter_range(t_Side, t_Direction); - assert(Tsct.size() == T_material.size()); - for(size_t i = 0; i < T_material.size(); ++i) + const size_t size{m_Material->getBandSize()}; + std::vector result; + result.reserve(size); + for(size_t i = 0; i < size; ++i) { - T_material[i] = T_material[i] + Tsct[i]; + result.push_back(T_dir_dif_at_wavelength(t_Side, t_Direction, i)); } - return T_material; + return result; } double CWovenCell::T_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, @@ -63,14 +63,14 @@ namespace SingleLayerOptics std::vector CWovenCell::R_dir_dif_band(const Side t_Side, const CBeamDirection & t_Direction) { - std::vector R_material = CUniformDiffuseCell::R_dir_dif_band(t_Side, t_Direction); - std::vector Tsct = Tscatter_range(t_Side, t_Direction); - assert(Tsct.size() == R_material.size()); - for(size_t i = 0; i < R_material.size(); ++i) + const size_t size{m_Material->getBandSize()}; + std::vector result; + result.reserve(size); + for(size_t i = 0; i < size; ++i) { - R_material[i] = R_material[i] - Tsct[i]; + result.push_back(R_dir_dif_at_wavelength(t_Side, t_Direction, i)); } - return R_material; + return result; } double CWovenCell::R_dir_dif_at_wavelength(FenestrationCommon::Side t_Side, @@ -103,20 +103,6 @@ namespace SingleLayerOptics return Tscatter(t_Direction, RScatter_mat); } - std::vector CWovenCell::Tscatter_range(const Side t_Side, - const CBeamDirection & t_Direction) - { - Side aScatterSide = oppositeSide(t_Side); - std::vector RScatter_mat = m_Material->getBandProperties(Property::R, aScatterSide); - std::vector aTsct; - for(size_t i = 0; i < RScatter_mat.size(); ++i) - { - double aTscatter = Tscatter(t_Direction, RScatter_mat[i]); - aTsct.push_back(aTscatter); - } - return aTsct; - } - double CWovenCell::Tscatter_at_wavelength(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction, size_t wavelengthIndex) diff --git a/src/SingleLayerOptics/src/WovenCell.hpp b/src/SingleLayerOptics/src/WovenCell.hpp index a92a137a..9f62af0c 100644 --- a/src/SingleLayerOptics/src/WovenCell.hpp +++ b/src/SingleLayerOptics/src/WovenCell.hpp @@ -38,8 +38,6 @@ namespace SingleLayerOptics std::shared_ptr getCellAsWoven() const; double Tscatter_single(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction); - std::vector Tscatter_range(FenestrationCommon::Side t_Side, - const CBeamDirection & t_Direction); double Tscatter_at_wavelength(FenestrationCommon::Side t_Side, const CBeamDirection & t_Direction, size_t wavelengthIndex); From 474220470348e0b9b368222c3538078008d7076f Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 11:45:14 -0700 Subject: [PATCH 70/81] BaseCell code duplication removal --- src/SingleLayerOptics/src/BaseCell.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/SingleLayerOptics/src/BaseCell.cpp b/src/SingleLayerOptics/src/BaseCell.cpp index 615edb1f..169647a4 100644 --- a/src/SingleLayerOptics/src/BaseCell.cpp +++ b/src/SingleLayerOptics/src/BaseCell.cpp @@ -46,13 +46,12 @@ namespace SingleLayerOptics std::vector CBaseCell::T_dir_dir_band(const Side t_Side, const CBeamDirection & t_Direction) { - const double value = T_dir_dir(t_Side, t_Direction); + const size_t size = m_Material->getBandSize(); std::vector aResults; - std::vector aMaterials = m_Material->getBandProperties(Property::T, t_Side); - size_t size = aMaterials.size(); + aResults.reserve(size); for(size_t i = 0; i < size; i++) { - aResults.push_back(value); + aResults.push_back(T_dir_dir_at_wavelength(t_Side, t_Direction, i)); } return aResults; @@ -62,19 +61,19 @@ namespace SingleLayerOptics const CBeamDirection & t_Direction, size_t wavelengthIndex) { + std::ignore = wavelengthIndex; return T_dir_dir(t_Side, t_Direction); } std::vector CBaseCell::R_dir_dir_band(const Side t_Side, const CBeamDirection & t_Direction) { - double value = R_dir_dir(t_Side, t_Direction); + const size_t size = m_Material->getBandSize(); std::vector aResults; - std::vector aMaterials = m_Material->getBandProperties(Property::R, t_Side); - size_t size = aMaterials.size(); + aResults.reserve(size); for(size_t i = 0; i < size; i++) { - aResults.push_back(value); + aResults.push_back(R_dir_dir_at_wavelength(t_Side, t_Direction, i)); } return aResults; @@ -84,6 +83,7 @@ namespace SingleLayerOptics const CBeamDirection & t_Direction, size_t wavelengthIndex) { + std::ignore = wavelengthIndex; return R_dir_dir(t_Side, t_Direction); } From 549d818288218ef5f23560bae3dbd52ddcdc6c84 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 12:23:32 -0700 Subject: [PATCH 71/81] Fix for common wavelengths in layers --- src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp | 16 +--------------- src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp | 1 - ...ltiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp | 10 +++++----- .../units/TripleClearDeflectionMeasured.unit.cpp | 7 ------- .../tst/units/TripleInBetweenShadeAir.unit.cpp | 7 ------- .../units/TripleInBetweenShadeAirArgon.unit.cpp | 7 ------- 6 files changed, 6 insertions(+), 42 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 81b05a41..85632750 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -31,22 +31,8 @@ namespace MultiLayerOptics { for(const auto & layer : m_Layer) { - if(matrixWavelengths.has_value()) - { - layer->setBandWavelengths(matrixWavelengths.value()); - } - } - } - - void - CEquivalentBSDFLayer::addLayer(const std::shared_ptr & t_Layer) - { - t_Layer->setBandWavelengths(m_CombinedLayerWavelengths); - if(m_Layer.empty()) - { - m_Lambda = t_Layer->getResults().lambdaMatrix(); + layer->setBandWavelengths(m_CombinedLayerWavelengths); } - m_Layer.push_back(t_Layer); } const SingleLayerOptics::BSDFDirections & diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp index ba69dcba..948b58d8 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.hpp @@ -24,7 +24,6 @@ namespace MultiLayerOptics std::vector> t_Layer, const std::optional> & matrixWavelengths); - void addLayer(const std::shared_ptr & t_Layer); [[nodiscard]] const SingleLayerOptics::BSDFDirections & getDirections(SingleLayerOptics::BSDFDirection t_Side) const; diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp index d918de56..16ead8c6 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_Woven_n_BandMaterial.unit.cpp @@ -319,7 +319,7 @@ TEST_F(MultiPaneBSDF_102_Woven_n_BandMaterial, TestWovenShade) CMultiPaneBSDF & aLayer = getLayer(); const double tauDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::T); - EXPECT_NEAR(0.13479190313779665, tauDiff, 1e-6); + EXPECT_NEAR(0.13484825298678549, tauDiff, 1e-6); const double rhoDiff = aLayer.DiffDiff(minLambda, maxLambda, Side::Front, PropertySimple::R); EXPECT_NEAR(0.56618660131592768, rhoDiff, 1e-6); @@ -328,18 +328,18 @@ TEST_F(MultiPaneBSDF_102_Woven_n_BandMaterial, TestWovenShade) EXPECT_NEAR(0.28263551018831601, absDiff1, 1e-6); const double absDiff2 = aLayer.AbsDiff(minLambda, maxLambda, Side::Front, 2); - EXPECT_NEAR(0.016386267883776801, absDiff2, 1e-6); + EXPECT_NEAR(0.016329675082156797, absDiff2, 1e-6); constexpr double theta = 0; constexpr double phi = 0; const double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.22093901512586928, tauHem, 1e-6); + EXPECT_NEAR(0.22102289948987869, tauHem, 1e-6); const double tauDir = aLayer.DirDir(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); - EXPECT_NEAR(0.20872562494761687, tauDir, 1e-6); + EXPECT_NEAR(0.20880416888774572, tauDir, 1e-6); const double rhoHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); @@ -353,5 +353,5 @@ TEST_F(MultiPaneBSDF_102_Woven_n_BandMaterial, TestWovenShade) EXPECT_NEAR(0.24285700879406391, abs1, 1e-6); const double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); - EXPECT_NEAR(0.024479598637899801, abs2, 1e-6); + EXPECT_NEAR(0.024396023333432437, abs2, 1e-6); } diff --git a/src/Tarcog/tst/units/TripleClearDeflectionMeasured.unit.cpp b/src/Tarcog/tst/units/TripleClearDeflectionMeasured.unit.cpp index ea563285..9f3cbcf5 100644 --- a/src/Tarcog/tst/units/TripleClearDeflectionMeasured.unit.cpp +++ b/src/Tarcog/tst/units/TripleClearDeflectionMeasured.unit.cpp @@ -61,13 +61,6 @@ class TripleClearDeflectionMeasured : public testing::Test Tarcog::ISO15099::CIGU aIGU(windowWidth, windowHeight); aIGU.addLayers({layer1, gap1, layer2, gap2, layer3}); - // Alternative way of adding layers - // aIGU.addLayer(layer1); - // aIGU.addLayer(gap1); - // aIGU.addLayer(layer2); - // aIGU.addLayer(gap2); - // aIGU.addLayer(layer3); - // Deflection properties std::vector measuredGapsWidths = {0.0135, 0.013}; aIGU.setDeflectionProperties(measuredGapsWidths); diff --git a/src/Tarcog/tst/units/TripleInBetweenShadeAir.unit.cpp b/src/Tarcog/tst/units/TripleInBetweenShadeAir.unit.cpp index 9b93cfcb..fb7e83bf 100644 --- a/src/Tarcog/tst/units/TripleInBetweenShadeAir.unit.cpp +++ b/src/Tarcog/tst/units/TripleInBetweenShadeAir.unit.cpp @@ -81,13 +81,6 @@ class TestInBetweenShadeAir : public testing::Test Tarcog::ISO15099::CIGU aIGU(windowWidth, windowHeight); aIGU.addLayers({aLayer1, GapLayer1, aLayer2, GapLayer2, aLayer3}); - // Alternative option of adding layers. - // aIGU.addLayer(aLayer1); - // aIGU.addLayer(GapLayer1); - // aIGU.addLayer(aLayer2); - // aIGU.addLayer(GapLayer2); - // aIGU.addLayer(aLayer3); - ///////////////////////////////////////////////////////// // System ///////////////////////////////////////////////////////// diff --git a/src/Tarcog/tst/units/TripleInBetweenShadeAirArgon.unit.cpp b/src/Tarcog/tst/units/TripleInBetweenShadeAirArgon.unit.cpp index 26442ea6..2944b6a1 100644 --- a/src/Tarcog/tst/units/TripleInBetweenShadeAirArgon.unit.cpp +++ b/src/Tarcog/tst/units/TripleInBetweenShadeAirArgon.unit.cpp @@ -101,13 +101,6 @@ class TestInBetweenShadeAirArgon : public testing::Test Tarcog::ISO15099::CIGU aIGU(windowWidth, windowHeight); aIGU.addLayers({layer1, gap1, layer2, gap2, layer3}); - // Alternative way of adding layers. - // aIGU.addLayer(layer1); - // aIGU.addLayer(gap1); - // aIGU.addLayer(layer2); - // aIGU.addLayer(gap2); - // aIGU.addLayer(layer3); - ///////////////////////////////////////////////////////// /// System ///////////////////////////////////////////////////////// From 545df58a9ca60e643713089b40e54b7c58aa9956 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 12:29:53 -0700 Subject: [PATCH 72/81] EquivalentBSDFLayer constructor is now retrieving results only from single wavelength --- .../src/EquivalentBSDFLayer.cpp | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 85632750..e4ef32d8 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -143,18 +143,21 @@ namespace MultiLayerOptics for(size_t layerNumber = 0; layerNumber < numberOfLayers; ++layerNumber) { m_TotA.at(aSide).addProperties( - layerNumber, m_CombinedLayerWavelengths[i], layer.getLayerAbsorptances(layerNumber + 1, aSide)); - m_TotJSC.at(aSide).addProperties( - layerNumber, m_CombinedLayerWavelengths[i], layer.getLayerJSC(layerNumber + 1, aSide)); + layerNumber, + m_CombinedLayerWavelengths[i], + layer.getLayerAbsorptances(layerNumber + 1, aSide)); + m_TotJSC.at(aSide).addProperties(layerNumber, + m_CombinedLayerWavelengths[i], + layer.getLayerJSC(layerNumber + 1, aSide)); } for(auto aProperty : EnumPropertySimple()) { m_Tot.at({aSide, aProperty}) - .addProperties(m_CombinedLayerWavelengths[i], layer.getProperty(aSide, aProperty)); + .addProperties(m_CombinedLayerWavelengths[i], + layer.getProperty(aSide, aProperty)); } } } - } CEquivalentBSDFLayerSingleBand @@ -162,19 +165,15 @@ namespace MultiLayerOptics { auto jscPrimeFront{m_Layer[0]->jscPrime(Side::Front, m_CombinedLayerWavelengths)}; auto jscPrimeBack{m_Layer[0]->jscPrime(Side::Back, m_CombinedLayerWavelengths)}; - const auto layerWLResults{m_Layer[0]->getWavelengthResults()}; - const auto curWL = m_CombinedLayerWavelengths[wavelengthIndex]; - auto index = m_Layer[0]->getBandIndex(curWL); - CEquivalentBSDFLayerSingleBand result{layerWLResults[static_cast(index)], - jscPrimeFront[wavelengthIndex], - jscPrimeBack[wavelengthIndex]}; + auto layerWLResults{m_Layer[0]->getResultsAtWavelength(wavelengthIndex)}; + CEquivalentBSDFLayerSingleBand result{ + layerWLResults, jscPrimeFront[wavelengthIndex], jscPrimeBack[wavelengthIndex]}; for(size_t i = 1u; i < m_Layer.size(); ++i) { jscPrimeFront = m_Layer[i]->jscPrime(Side::Front, m_CombinedLayerWavelengths); jscPrimeBack = m_Layer[i]->jscPrime(Side::Back, m_CombinedLayerWavelengths); - index = m_Layer[i]->getBandIndex(curWL); - result.addLayer(m_Layer[i]->getWavelengthResults()[index], + result.addLayer(m_Layer[i]->getResultsAtWavelength(wavelengthIndex), jscPrimeFront[wavelengthIndex], jscPrimeBack[wavelengthIndex]); } From 115c02157331fa56b8ac49492a2eaae26fa1ea9a Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 12:51:26 -0700 Subject: [PATCH 73/81] All wavelength BSDF matrices are no longer saved with BSDFLayer --- src/SingleLayerOptics/src/BSDFLayer.cpp | 44 ++++++------------- src/SingleLayerOptics/src/BSDFLayer.hpp | 14 +++--- .../src/DirectionalDiffuseBSDFLayer.cpp | 7 +-- .../src/DirectionalDiffuseBSDFLayer.hpp | 3 +- .../src/SpecularBSDFLayer.cpp | 3 +- .../src/SpecularBSDFLayer.hpp | 3 +- .../src/UniformDiffuseBSDFLayer.cpp | 7 +-- .../src/UniformDiffuseBSDFLayer.hpp | 3 +- 8 files changed, 35 insertions(+), 49 deletions(-) diff --git a/src/SingleLayerOptics/src/BSDFLayer.cpp b/src/SingleLayerOptics/src/BSDFLayer.cpp index a633d01b..ac96915e 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.cpp +++ b/src/SingleLayerOptics/src/BSDFLayer.cpp @@ -16,8 +16,7 @@ namespace SingleLayerOptics m_BSDFHemisphere(t_Hemisphere), m_Cell(t_Cell), m_Results(m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)), - m_Calculated(false), - m_CalculatedWV(false) + m_Calculated(false) { // TODO: Maybe to refactor results to incoming and outgoing if not affecting speed. // This is not necessary before axisymmetry is introduced @@ -27,7 +26,6 @@ namespace SingleLayerOptics { m_Cell->setSourceData(t_SourceData); m_Calculated = false; - m_CalculatedWV = false; } const BSDFDirections & CBSDFLayer::getDirections(const BSDFDirection t_Side) const @@ -47,12 +45,7 @@ namespace SingleLayerOptics std::vector CBSDFLayer::getWavelengthResults() { - if(!m_CalculatedWV) - { - calculate_wv(); - m_CalculatedWV = true; - } - return m_WVResults; + return calculate_wv(); } BSDFIntegrator CBSDFLayer::getResultsAtWavelength(size_t wavelengthIndex) @@ -113,7 +106,6 @@ namespace SingleLayerOptics void CBSDFLayer::setBandWavelengths(const std::vector & wavelengths) { m_Cell->setBandWavelengths(wavelengths); - m_CalculatedWV = false; } void CBSDFLayer::calc_dir_dir() @@ -139,7 +131,7 @@ namespace SingleLayerOptics } } - void CBSDFLayer::calc_dir_dir_wv() + void CBSDFLayer::calc_dir_dir_wv(std::vector & results) { for(Side aSide : EnumSide()) { @@ -154,8 +146,8 @@ namespace SingleLayerOptics size_t numWV = aTau.size(); for(size_t j = 0; j < numWV; ++j) { - auto & tau = m_WVResults[j].getMatrix(aSide, PropertySimple::T); - auto & rho = m_WVResults[j].getMatrix(aSide, PropertySimple::R); + auto & tau = results[j].getMatrix(aSide, PropertySimple::T); + auto & rho = results[j].getMatrix(aSide, PropertySimple::R); tau(i, i) += aTau[j] / Lambda; rho(i, i) += aRho[j] / Lambda; } @@ -178,7 +170,7 @@ namespace SingleLayerOptics } } - void CBSDFLayer::calc_dir_dif_wv() + void CBSDFLayer::calc_dir_dif_wv(std::vector & results) { for(Side aSide : EnumSide()) { @@ -188,33 +180,25 @@ namespace SingleLayerOptics for(size_t i = 0; i < size; ++i) { const CBeamDirection aDirection = aDirections[i].centerPoint(); - calcDiffuseDistribution_wv(aSide, aDirection, i); + calcDiffuseDistribution_wv(aSide, aDirection, i, results); } } } - void CBSDFLayer::fillWLResultsFromMaterialCell() - { - m_WVResults.clear(); - size_t size = m_Cell->getBandSize(); - for(size_t i = 0; i < size; ++i) - { - m_WVResults.emplace_back(m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)); - } - } - void CBSDFLayer::calculate() { - fillWLResultsFromMaterialCell(); calc_dir_dir(); calc_dir_dif(); } - void CBSDFLayer::calculate_wv() + std::vector CBSDFLayer::calculate_wv() { - fillWLResultsFromMaterialCell(); - calc_dir_dir_wv(); - calc_dir_dif_wv(); + std::vector results(m_Cell->getBandSize(), m_BSDFHemisphere.getDirections(BSDFDirection::Incoming)); + + calc_dir_dir_wv(results); + calc_dir_dif_wv(results); + + return results; } std::shared_ptr CBSDFLayer::getCell() const diff --git a/src/SingleLayerOptics/src/BSDFLayer.hpp b/src/SingleLayerOptics/src/BSDFLayer.hpp index adbaa4e5..1b63356a 100644 --- a/src/SingleLayerOptics/src/BSDFLayer.hpp +++ b/src/SingleLayerOptics/src/BSDFLayer.hpp @@ -68,7 +68,8 @@ namespace SingleLayerOptics virtual void calcDiffuseDistribution_wv(const FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, - const size_t t_DirectionIndex) = 0; + const size_t t_DirectionIndex, + std::vector & results) = 0; virtual void calcDiffuseDistribution_byWavelength(const FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, @@ -80,27 +81,22 @@ namespace SingleLayerOptics // cases this call is not necessary. However, refactoring is needed since there is no reason // to create CBSDFLayer if it will not be calculated void calculate(); - void calculate_wv(); + std::vector calculate_wv(); const BSDFHemisphere m_BSDFHemisphere; std::shared_ptr m_Cell; BSDFIntegrator m_Results; - // Results over each wavelength - std::vector m_WVResults; private: void calc_dir_dir(); void calc_dir_dif(); - void fillWLResultsFromMaterialCell(); // Keeps state of the object. Calculations are not done by default (in constructor) // because they are time-consuming. bool m_Calculated; // Calculation of results over each wavelength - void calc_dir_dir_wv(); - void calc_dir_dif_wv(); - // State to hold information of wavelength results are already calculated - bool m_CalculatedWV; + void calc_dir_dir_wv(std::vector & results); + void calc_dir_dif_wv(std::vector & results); void calculate_dir_dir_wl(size_t wavelengthIndex, BSDFIntegrator & results); void calculate_dir_dif_wv(size_t wavelengthIndex, BSDFIntegrator & results); diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp index 55fdc37f..ca80555b 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.cpp @@ -58,7 +58,8 @@ namespace SingleLayerOptics void CDirectionalBSDFLayer::calcDiffuseDistribution_wv(const Side aSide, const CBeamDirection & incomingDirection, - const size_t incomingDirectionIndex) + const size_t incomingDirectionIndex, + std::vector & results) { std::shared_ptr aCell = cellAsDirectionalDiffuse(); @@ -77,8 +78,8 @@ namespace SingleLayerOptics const size_t numWV = aTau.size(); for(size_t j = 0; j < numWV; ++j) { - auto & tau = m_WVResults[j].getMatrix(aSide, PropertySimple::T); - auto & rho = m_WVResults[j].getMatrix(aSide, PropertySimple::R); + auto & tau = results[j].getMatrix(aSide, PropertySimple::T); + auto & rho = results[j].getMatrix(aSide, PropertySimple::R); tau(outgoingDirectionIndex, incomingDirectionIndex) += aTau[j] * diffuseDistributionScalar(outgoingDirectionIndex); rho(outgoingDirectionIndex, incomingDirectionIndex) += diff --git a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp index 05324042..be8c63ea 100644 --- a/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/DirectionalDiffuseBSDFLayer.hpp @@ -23,7 +23,8 @@ namespace SingleLayerOptics const size_t incomingDirectionIndex) override; void calcDiffuseDistribution_wv(const FenestrationCommon::Side aSide, const CBeamDirection & incomingDirection, - const size_t incomingDirectionIndex) override; + const size_t incomingDirectionIndex, + std::vector & results) override; void calcDiffuseDistribution_byWavelength(FenestrationCommon::Side aSide, const CBeamDirection & incomingDirection, size_t incomingDirectionIndex, diff --git a/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp b/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp index 4083fc7b..0ff7228c 100644 --- a/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/SpecularBSDFLayer.cpp @@ -31,7 +31,8 @@ namespace SingleLayerOptics void CSpecularBSDFLayer::calcDiffuseDistribution_wv(const Side, const CBeamDirection &, - const size_t) + const size_t, + std::vector &) { // No diffuse calculations are necessary for specular layer. } diff --git a/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp b/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp index 1c78fbe8..ffef3714 100644 --- a/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/SpecularBSDFLayer.hpp @@ -24,7 +24,8 @@ namespace SingleLayerOptics void calcDiffuseDistribution_wv(FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, - size_t t_DirectionIndex) override; + size_t t_DirectionIndex, + std::vector & results) override; void calcDiffuseDistribution_byWavelength(const FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, diff --git a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp index dfeb7499..a81401c7 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp +++ b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.cpp @@ -52,7 +52,8 @@ namespace SingleLayerOptics void CUniformDiffuseBSDFLayer::calcDiffuseDistribution_wv(const Side aSide, const CBeamDirection & t_Direction, - const size_t t_DirectionIndex) + const size_t t_DirectionIndex, + std::vector & results) { std::shared_ptr aCell = cellAsUniformDiffuse(); @@ -69,8 +70,8 @@ namespace SingleLayerOptics { using ConstantsData::WCE_PI; - auto & tau = m_WVResults[j].getMatrix(aSide, PropertySimple::T); - auto & rho = m_WVResults[j].getMatrix(aSide, PropertySimple::R); + auto & tau = results[j].getMatrix(aSide, PropertySimple::T); + auto & rho = results[j].getMatrix(aSide, PropertySimple::R); tau(i, t_DirectionIndex) += aTau[j] / WCE_PI; rho(i, t_DirectionIndex) += Ref[j] / WCE_PI; } diff --git a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp index 915362f9..132875b1 100644 --- a/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp +++ b/src/SingleLayerOptics/src/UniformDiffuseBSDFLayer.hpp @@ -23,7 +23,8 @@ namespace SingleLayerOptics void calcDiffuseDistribution_wv(FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, - size_t t_DirectionIndex) override; + size_t t_DirectionIndex, + std::vector & results) override; void calcDiffuseDistribution_byWavelength(const FenestrationCommon::Side aSide, const CBeamDirection & t_Direction, From ec60005eaebd37393173a6c9bc6fe0f783499455 Mon Sep 17 00:00:00 2001 From: Simon Vidanovic Date: Fri, 12 Aug 2022 16:16:47 -0700 Subject: [PATCH 74/81] Attempt to do matrix calculations in threads. --- cmake/WCECompilerFlags.cmake | 2 +- src/Common/src/MatrixSeries.cpp | 1 + .../src/EquivalentBSDFLayer.cpp | 67 ++++++++++++------- .../src/EquivalentBSDFLayerSingleBand.hpp | 1 + .../src/MaterialDescription.cpp | 13 ++++ .../src/AngularSpectralSample.cpp | 5 ++ .../src/MeasuredSampleData.cpp | 3 + src/SpectralAveraging/src/SpectralSample.cpp | 4 ++ 8 files changed, 72 insertions(+), 24 deletions(-) diff --git a/cmake/WCECompilerFlags.cmake b/cmake/WCECompilerFlags.cmake index 357470b5..1bbe4145 100644 --- a/cmake/WCECompilerFlags.cmake +++ b/cmake/WCECompilerFlags.cmake @@ -39,7 +39,7 @@ ENDIF () if (MSVC AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 19.11)) # VS 2017 : Disable warnings from from gtest code, using deprecated code related to TR1 add_definitions(-D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING) - # add_definitions(-DSTL_MULTITHREADING) + add_definitions(-DSTL_MULTITHREADING) endif() macro( warning_level_update_wce ) diff --git a/src/Common/src/MatrixSeries.cpp b/src/Common/src/MatrixSeries.cpp index 70d18885..067bcd6e 100644 --- a/src/Common/src/MatrixSeries.cpp +++ b/src/Common/src/MatrixSeries.cpp @@ -6,6 +6,7 @@ #include "Series.hpp" #include "IntegratorStrategy.hpp" + namespace FenestrationCommon { CMatrixSeries::CMatrixSeries(const size_t t_Size1, const size_t t_Size2) : diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index e4ef32d8..46fabb8a 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -134,31 +134,50 @@ namespace MultiLayerOptics void CEquivalentBSDFLayer::calculateWavelengthByWavelengthProperties() { - for(size_t i = 0u; i < m_CombinedLayerWavelengths.size(); ++i) + std::vector wavelengthIndexes; + for(size_t i = 0; i < m_CombinedLayerWavelengths.size(); ++i) { - auto layer{getEquivalentLayerAtWavelength(i)}; - for(auto aSide : EnumSide()) - { - const auto numberOfLayers{m_Layer.size()}; - for(size_t layerNumber = 0; layerNumber < numberOfLayers; ++layerNumber) - { - m_TotA.at(aSide).addProperties( - layerNumber, - m_CombinedLayerWavelengths[i], - layer.getLayerAbsorptances(layerNumber + 1, aSide)); - m_TotJSC.at(aSide).addProperties(layerNumber, - m_CombinedLayerWavelengths[i], - layer.getLayerJSC(layerNumber + 1, aSide)); - } - for(auto aProperty : EnumPropertySimple()) - { - m_Tot.at({aSide, aProperty}) - .addProperties(m_CombinedLayerWavelengths[i], - layer.getProperty(aSide, aProperty)); - } - } + wavelengthIndexes.push_back(i); } - } + + std::mutex absorptanceMutex; + std::mutex jscMutex; + std::mutex totMutex; + + std::for_each(std::execution::par, + wavelengthIndexes.begin(), + wavelengthIndexes.end(), + [&](const size_t & index) { + // for(size_t i = 0u; i < m_CombinedLayerWavelengths.size(); ++i) + auto layer{getEquivalentLayerAtWavelength(index)}; + for(auto aSide : EnumSide()) + { + const auto numberOfLayers{m_Layer.size()}; + for(size_t layerNumber = 0; layerNumber < numberOfLayers; + ++layerNumber) + { + auto totA{layer.getLayerAbsorptances(layerNumber + 1, aSide)}; + + std::lock_guard lock_abs(absorptanceMutex); + m_TotA.at(aSide).addProperties( + layerNumber, m_CombinedLayerWavelengths[index], totA); + + auto totJSC{layer.getLayerJSC(layerNumber + 1, aSide)}; + std::lock_guard lock_jsc(jscMutex); + m_TotJSC.at(aSide).addProperties( + layerNumber, m_CombinedLayerWavelengths[index], totJSC); + } + for(auto aProperty : EnumPropertySimple()) + { + auto tot{layer.getProperty(aSide, aProperty)}; + + std::lock_guard lock_tot(totMutex); + m_Tot.at({aSide, aProperty}) + .addProperties(m_CombinedLayerWavelengths[index], tot); + } + } + }); + }; CEquivalentBSDFLayerSingleBand CEquivalentBSDFLayer::getEquivalentLayerAtWavelength(size_t wavelengthIndex) const @@ -166,6 +185,8 @@ namespace MultiLayerOptics auto jscPrimeFront{m_Layer[0]->jscPrime(Side::Front, m_CombinedLayerWavelengths)}; auto jscPrimeBack{m_Layer[0]->jscPrime(Side::Back, m_CombinedLayerWavelengths)}; auto layerWLResults{m_Layer[0]->getResultsAtWavelength(wavelengthIndex)}; + + CEquivalentBSDFLayerSingleBand result{ layerWLResults, jscPrimeFront[wavelengthIndex], jscPrimeBack[wavelengthIndex]}; diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp index c71e343f..4ecce846 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayerSingleBand.hpp @@ -54,6 +54,7 @@ namespace MultiLayerOptics class CEquivalentBSDFLayerSingleBand { public: + CEquivalentBSDFLayerSingleBand() = default; explicit CEquivalentBSDFLayerSingleBand( const SingleLayerOptics::BSDFIntegrator & t_Layer, const std::vector & jscPrimeFront = std::vector(), diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index c6469ac2..3898dd4e 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -2,11 +2,18 @@ #include #include +#include + #include "MaterialDescription.hpp" #include "WCECommon.hpp" #include "WCESpectralAveraging.hpp" #include "OpticalSurface.hpp" +std::mutex materialWL; +std::mutex materialSampleWL; +std::mutex dualBandMaterialMutexRatio; +std::mutex dualBandMaterialMutexRadiation; + using namespace FenestrationCommon; using namespace SpectralAveraging; @@ -177,9 +184,11 @@ namespace SingleLayerOptics std::vector CMaterial::getBandWavelengths() { + std::lock_guard lock(materialWL); if(!m_WavelengthsCalculated) { m_Wavelengths = calculateBandWavelengths(); + m_WavelengthsCalculated = true; } return m_Wavelengths; } @@ -405,6 +414,7 @@ namespace SingleLayerOptics { createNIRRange(m_MaterialVisibleRange, m_MaterialSolarRange, t_Ratio); + std::lock_guard lock(dualBandMaterialMutexRatio); if(!m_WavelengthsCalculated) { m_Wavelengths = calculateBandWavelengths(); @@ -416,6 +426,7 @@ namespace SingleLayerOptics { createNIRRange(m_MaterialVisibleRange, m_MaterialSolarRange, ConstantsData::NIRRatio); + std::lock_guard lock(dualBandMaterialMutexRadiation); if(!m_WavelengthsCalculated) { m_Wavelengths = calculateBandWavelengths(); @@ -507,6 +518,8 @@ namespace SingleLayerOptics void CMaterialSample::setBandWavelengths(const std::vector & wavelengths) { + std::lock_guard lock(materialSampleWL); + CMaterial::setBandWavelengths(wavelengths); m_AngularSample->setBandWavelengths(m_Wavelengths); m_WavelengthsCalculated = true; diff --git a/src/SpectralAveraging/src/AngularSpectralSample.cpp b/src/SpectralAveraging/src/AngularSpectralSample.cpp index 9c883eb8..84066a5b 100755 --- a/src/SpectralAveraging/src/AngularSpectralSample.cpp +++ b/src/SpectralAveraging/src/AngularSpectralSample.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "AngularSpectralSample.hpp" #include "MeasuredSampleData.hpp" @@ -9,6 +10,7 @@ #include "AngularProperties.hpp" #include "WCECommon.hpp" +std::mutex findAngularSample; using namespace FenestrationCommon; @@ -169,6 +171,7 @@ namespace SpectralAveraging Side const t_Side, double const t_Angle) { + auto aSample = findSpectralSample(t_Angle); auto aProperties = aSample->getWavelengthsProperty(t_Property, t_Side); @@ -212,6 +215,8 @@ namespace SpectralAveraging std::shared_ptr CAngularSpectralSample::findSpectralSample(double const t_Angle) { + std::lock_guard lock(findAngularSample); + std::shared_ptr aSample = nullptr; const auto it = find_if(m_SpectralProperties.begin(), diff --git a/src/SpectralAveraging/src/MeasuredSampleData.cpp b/src/SpectralAveraging/src/MeasuredSampleData.cpp index 6393998a..b14dd17e 100644 --- a/src/SpectralAveraging/src/MeasuredSampleData.cpp +++ b/src/SpectralAveraging/src/MeasuredSampleData.cpp @@ -2,6 +2,8 @@ #include #include +#include + #include "MeasuredSampleData.hpp" #include "WCECommon.hpp" @@ -125,6 +127,7 @@ namespace SpectralAveraging void CSpectralSampleData::calculateProperties() { + if(!m_absCalculated) { m_Property.at(std::make_pair(Property::Abs, Side::Front)).clear(); diff --git a/src/SpectralAveraging/src/SpectralSample.cpp b/src/SpectralAveraging/src/SpectralSample.cpp index 45d5ca9f..1b4279b1 100644 --- a/src/SpectralAveraging/src/SpectralSample.cpp +++ b/src/SpectralAveraging/src/SpectralSample.cpp @@ -1,10 +1,12 @@ #include #include +#include #include "SpectralSample.hpp" #include "MeasuredSampleData.hpp" #include "WCECommon.hpp" +std::mutex spectralSampleMutex; using namespace FenestrationCommon; @@ -315,6 +317,8 @@ namespace SpectralAveraging void CSpectralSample::calculateState() { CSample::calculateState(); + + std::lock_guard lock(spectralSampleMutex); if(m_SourceData.size() == 0) { for(const auto & prop : EnumProperty()) From b770fb1f4a93d3bcfe256bec483af3742ba8d240 Mon Sep 17 00:00:00 2001 From: vidanovic Date: Fri, 12 Aug 2022 18:49:31 -0700 Subject: [PATCH 75/81] Series now can reserve size and also insert value at given index. --- src/Common/src/Series.cpp | 20 +++++++++++-- src/Common/src/Series.hpp | 13 +++++---- src/Common/tst/units/SeriesGeneral.unit.cpp | 28 ++++++++++++++++++- src/Common/tst/units/WavelengthRange.unit.cpp | 2 -- 4 files changed, 52 insertions(+), 11 deletions(-) diff --git a/src/Common/src/Series.cpp b/src/Common/src/Series.cpp index 49455c87..5375d597 100644 --- a/src/Common/src/Series.cpp +++ b/src/Common/src/Series.cpp @@ -30,12 +30,17 @@ namespace FenestrationCommon return m_x; } + void CSeriesPoint::setX(double x) + { + m_x = x; + } + double CSeriesPoint::value() const { return m_Value; } - void CSeriesPoint::value(double const t_Value) + void CSeriesPoint::setValue(double const t_Value) { m_Value = t_Value; } @@ -56,9 +61,12 @@ namespace FenestrationCommon // CSeries ///////////////////////////////////////////////////// + CSeries::CSeries(size_t size) : m_Series(size) + {} + CSeries::CSeries(const std::vector> & t_values) { - m_Series.clear(); + //m_Series.clear(); for(auto & val : t_values) { m_Series.emplace_back(val.first, val.second); @@ -67,7 +75,7 @@ namespace FenestrationCommon CSeries::CSeries(const std::initializer_list> & t_values) { - m_Series.clear(); + //m_Series.clear(); for(const auto & val : t_values) { m_Series.emplace_back(val.first, val.second); @@ -79,6 +87,12 @@ namespace FenestrationCommon m_Series.emplace_back(t_x, t_Value); } + void CSeries::setPropertyAtIndex(size_t index, double x, double value) + { + m_Series[index].setX(x); + m_Series[index].setValue(value); + } + void CSeries::insertToBeginning(double t_x, double t_Value) { m_Series.insert(m_Series.begin(), {t_x, t_Value}); diff --git a/src/Common/src/Series.hpp b/src/Common/src/Series.hpp index aec2a430..3b9fb5cc 100644 --- a/src/Common/src/Series.hpp +++ b/src/Common/src/Series.hpp @@ -14,8 +14,9 @@ namespace FenestrationCommon CSeriesPoint(CSeriesPoint const & t_SeriesPoint); CSeriesPoint(double t_Wavelength, double t_Value); [[nodiscard]] double x() const; + void setX(double x); [[nodiscard]] double value() const; - void value(double const t_Value); + void setValue(double t_Value); CSeriesPoint & operator=(const CSeriesPoint & t_Point); bool operator<(const CSeriesPoint & t_Point) const; @@ -34,21 +35,23 @@ namespace FenestrationCommon public: CSeries() = default; + explicit CSeries (size_t size); explicit CSeries(const std::vector> & t_values); - explicit CSeries(const std::initializer_list> & t_values); + CSeries(const std::initializer_list> & t_values); CSeries(const CSeries & t_Series) = default; void addProperty(double t_x, double t_Value); + void setPropertyAtIndex(size_t index, double x, double value); void insertToBeginning(double t_x, double t_Value); // Create wavelength array with identical values over entire wavelength spectrum - void setConstantValues(const std::vector & t_x, double const t_Value); + void setConstantValues(const std::vector & t_x, double t_Value); - CSeries integrate(IntegrationType t_IntegrationType, + [[nodiscard]] CSeries integrate(IntegrationType t_IntegrationType, double normalizationCoefficient = 1, const std::optional> & integrationPoints = std::nullopt) const; - CSeries interpolate(const std::vector & t_Wavelengths) const; + [[nodiscard]] CSeries interpolate(const std::vector & t_Wavelengths) const; //! \brief Multiplication of values in spectral properties that have same wavelength. //! diff --git a/src/Common/tst/units/SeriesGeneral.unit.cpp b/src/Common/tst/units/SeriesGeneral.unit.cpp index ffd97c58..973ddb96 100644 --- a/src/Common/tst/units/SeriesGeneral.unit.cpp +++ b/src/Common/tst/units/SeriesGeneral.unit.cpp @@ -38,7 +38,7 @@ TEST_F(TestSeriesGeneral, TestSeriesPoint) EXPECT_EQ(a.value(), b.value()); EXPECT_EQ(a.x(), b.x()); - b.value(7); + b.setValue(7); EXPECT_EQ(b.value(), 7); @@ -113,4 +113,30 @@ TEST_F(TestSeriesGeneral, TestConstantSeries) { EXPECT_EQ(err.what(), std::string("Index out of range.")); } +} + +TEST_F(TestSeriesGeneral, SeriesPredefinedSize) +{ + constexpr size_t seriesSize{12}; + CSeries series{seriesSize}; + + EXPECT_EQ(series.size(), seriesSize); +} + +TEST_F(TestSeriesGeneral, SetValueAtIndex) +{ + constexpr size_t seriesSize{12}; + CSeries series{seriesSize}; + + constexpr size_t index{2u}; + constexpr double xValue{3.1}; + constexpr double yValue{14.5}; + + series.setPropertyAtIndex(index, xValue, yValue); + + const CSeriesPoint correct{xValue, yValue}; + const auto result{series[index]}; + + EXPECT_NEAR(correct.x(), result.x(), 1e-6); + EXPECT_NEAR(correct.value(), result.value(), 1e-6); } \ No newline at end of file diff --git a/src/Common/tst/units/WavelengthRange.unit.cpp b/src/Common/tst/units/WavelengthRange.unit.cpp index 59ffabde..8431e723 100644 --- a/src/Common/tst/units/WavelengthRange.unit.cpp +++ b/src/Common/tst/units/WavelengthRange.unit.cpp @@ -156,7 +156,5 @@ TEST_F(WavelengthRangeTest, TestInVisibleRange_7) constexpr double wavelength{0.780003}; CWavelengthRange range{WavelengthRange::Visible}; - auto test{range.isInRange(wavelength)}; - EXPECT_EQ(false, range.isInRange(wavelength)); } \ No newline at end of file From 4814ded2a1c61bfbf7bf41c92493dcf88df136d9 Mon Sep 17 00:00:00 2001 From: vidanovic Date: Fri, 12 Aug 2022 19:11:41 -0700 Subject: [PATCH 76/81] MatrixSeries now can setup predefines CSeries size and also can insert values at certain position. --- src/Common/src/MatrixSeries.cpp | 18 ++++++++-- src/Common/src/MatrixSeries.hpp | 34 ++++++++---------- src/Common/tst/units/MatrixSeries.unit.cpp | 40 ++++++++++++++++------ 3 files changed, 59 insertions(+), 33 deletions(-) diff --git a/src/Common/src/MatrixSeries.cpp b/src/Common/src/MatrixSeries.cpp index 067bcd6e..a3560b25 100644 --- a/src/Common/src/MatrixSeries.cpp +++ b/src/Common/src/MatrixSeries.cpp @@ -9,7 +9,7 @@ namespace FenestrationCommon { - CMatrixSeries::CMatrixSeries(const size_t t_Size1, const size_t t_Size2) : + CMatrixSeries::CMatrixSeries(const size_t t_Size1, const size_t t_Size2, size_t seriesSize) : m_Size1(t_Size1), m_Size2(t_Size2) { m_Matrix = std::vector>(m_Size1); @@ -18,7 +18,7 @@ namespace FenestrationCommon m_Matrix[i].resize(m_Size2); for(size_t j = 0; j < m_Size2; ++j) { - m_Matrix[i][j] = CSeries(); + m_Matrix[i][j] = CSeries(seriesSize); } } } @@ -74,6 +74,20 @@ namespace FenestrationCommon } } + void CMatrixSeries::setPropertiesAtIndex(size_t index, + double t_Wavelength, + const SquareMatrix & t_Matrix) + { + for(size_t i = 0; i < m_Matrix.size(); ++i) + { + assert(m_Matrix.size() == t_Matrix.size()); + for(size_t j = 0; j < m_Matrix[i].size(); ++j) + { + m_Matrix[i][j].setPropertyAtIndex(index, t_Wavelength, t_Matrix(i, j)); + } + } + } + void CMatrixSeries::addSeries(const size_t i, const size_t j, const CSeries & series) { m_Matrix[i][j] = series; diff --git a/src/Common/src/MatrixSeries.hpp b/src/Common/src/MatrixSeries.hpp index 86e45e78..b1f74155 100644 --- a/src/Common/src/MatrixSeries.hpp +++ b/src/Common/src/MatrixSeries.hpp @@ -15,21 +15,17 @@ namespace FenestrationCommon { public: CMatrixSeries() = default; - CMatrixSeries(const size_t t_Size1, const size_t t_Size2); + CMatrixSeries(size_t t_Size1, size_t t_Size2, size_t seriesSize = 0u); CMatrixSeries(const CMatrixSeries & t_MatrixSeries); CMatrixSeries & operator=(CMatrixSeries const & t_MatrixSeries); // add property at specific series position - void addProperty(const size_t i, - const size_t j, - const double t_Wavelength, - const double t_Value); - void addProperties(const size_t i, - const double t_Wavelength, - const std::vector & t_Values); - void addProperties(const double t_Wavelength, const SquareMatrix & t_Matrix); + void addProperty(size_t i, size_t j, double t_Wavelength, double t_Value); + void addProperties(size_t i, double t_Wavelength, const std::vector & t_Values); + void addProperties(double t_Wavelength, const SquareMatrix & t_Matrix); + void setPropertiesAtIndex(size_t index, double t_Wavelength, const SquareMatrix & t_Matrix); - void addSeries(const size_t i, const size_t j, const CSeries & series); + void addSeries(size_t i, size_t j, const CSeries & series); // Multiply all series in matrix with provided one void mMult(const CSeries & t_Series); @@ -37,24 +33,22 @@ namespace FenestrationCommon // Multiplication of several series with matrix series void mMult(const std::vector & t_Series); - std::vector & operator[](const size_t index); + std::vector & operator[](size_t index); - void integrate(const IntegrationType t_Integration, + void integrate(IntegrationType t_Integration, double normalizationCoefficient, const std::optional> & integrationPoints); void interpolate(const std::vector & t_Wavelengths); - [[nodiscard]] std::vector> - getSums(const double minLambda, - const double maxLambda, - const std::vector & t_ScaleValue) const; + [[nodiscard]] std::vector> getSums( + double minLambda, double maxLambda, const std::vector & t_ScaleValue) const; - [[nodiscard]] std::vector> getSums(const double minLambda, - const double maxLambda) const; + [[nodiscard]] std::vector> getSums(double minLambda, + double maxLambda) const; - SquareMatrix getSquaredMatrixSums(const double minLambda, - const double maxLambda, + SquareMatrix getSquaredMatrixSums(double minLambda, + double maxLambda, const std::vector & t_ScaleValue); [[nodiscard]] size_t size1() const; diff --git a/src/Common/tst/units/MatrixSeries.unit.cpp b/src/Common/tst/units/MatrixSeries.unit.cpp index 61e72871..b765f19d 100644 --- a/src/Common/tst/units/MatrixSeries.unit.cpp +++ b/src/Common/tst/units/MatrixSeries.unit.cpp @@ -9,7 +9,7 @@ using namespace FenestrationCommon; class TestMatrixSeries : public testing::Test { private: - std::shared_ptr m_MatrixSeries; + CMatrixSeries m_MatrixSeries{2, 2}; protected: void SetUp() override @@ -29,26 +29,22 @@ class TestMatrixSeries : public testing::Test mat.emplace_back(SquareMatrix{{1.5, 9.3}, {9.0, 7.4}}); wl.push_back(0.60); - // Fill up matrix series - m_MatrixSeries = std::make_shared(2, 2); for(size_t i = 0; i < wl.size(); ++i) { - m_MatrixSeries->addProperties(wl[i], mat[i]); + m_MatrixSeries.addProperties(wl[i], mat[i]); } } public: - std::shared_ptr getMatrix() const + [[nodiscard]] CMatrixSeries & getMatrix() { return m_MatrixSeries; } }; -TEST_F(TestMatrixSeries, Test1) +TEST_F(TestMatrixSeries, Sum) { - SCOPED_TRACE("Begin Test: Test matrix series sum."); - - auto & aMat = *getMatrix(); + auto & aMat = getMatrix(); const double minLambda = 0.45; const double maxLambda = 0.65; @@ -72,11 +68,11 @@ TEST_F(TestMatrixSeries, Test1) } } -TEST_F(TestMatrixSeries, Test2) +TEST_F(TestMatrixSeries, Multiplication) { SCOPED_TRACE("Begin Test: Test matrix series multiplication."); - CMatrixSeries mat(*getMatrix()); + CMatrixSeries mat(getMatrix()); CSeries multiplier; multiplier.addProperty(0.45, 1.6); @@ -110,3 +106,25 @@ TEST_F(TestMatrixSeries, Test2) } } } + +TEST_F(TestMatrixSeries, SetPropertiesAtIndex) +{ + constexpr size_t size1{2u}; + constexpr size_t size2{2u}; + constexpr size_t seriesSize{12u}; + + const SquareMatrix mat{{2.8, 3.4}, {3.9, 7.5}}; + + CMatrixSeries matrix{size1, size2, seriesSize}; + + constexpr size_t index{5u}; + const double wl{0.305}; + + matrix.setPropertiesAtIndex(index, wl, mat); + + + const auto result1 = matrix[0][0]; + + EXPECT_NEAR(0.305, result1[index].x(), 1e-6); + EXPECT_NEAR(2.8, result1[index].value(), 1e-6); +} From a2168633326ad1827c33f7594ff7efb35d73d201 Mon Sep 17 00:00:00 2001 From: vidanovic Date: Fri, 12 Aug 2022 19:18:50 -0700 Subject: [PATCH 77/81] MatrixSeries build now inserted into correct place at multithreading. --- src/Common/src/MatrixSeries.cpp | 11 +++++++++++ src/Common/src/MatrixSeries.hpp | 1 + src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp | 13 +++++++------ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/Common/src/MatrixSeries.cpp b/src/Common/src/MatrixSeries.cpp index a3560b25..695f8fe9 100644 --- a/src/Common/src/MatrixSeries.cpp +++ b/src/Common/src/MatrixSeries.cpp @@ -62,6 +62,17 @@ namespace FenestrationCommon } } + void CMatrixSeries::setPropertiesAtIndex(size_t index, + size_t i, + double t_Wavelength, + const std::vector & t_Values) + { + for(size_t j = 0; j < t_Values.size(); ++j) + { + m_Matrix[i][j].setPropertyAtIndex(index, t_Wavelength, t_Values[j]); + } + } + void CMatrixSeries::addProperties(const double t_Wavelength, const SquareMatrix & t_Matrix) { for(size_t i = 0; i < m_Matrix.size(); ++i) diff --git a/src/Common/src/MatrixSeries.hpp b/src/Common/src/MatrixSeries.hpp index b1f74155..ec690699 100644 --- a/src/Common/src/MatrixSeries.hpp +++ b/src/Common/src/MatrixSeries.hpp @@ -22,6 +22,7 @@ namespace FenestrationCommon // add property at specific series position void addProperty(size_t i, size_t j, double t_Wavelength, double t_Value); void addProperties(size_t i, double t_Wavelength, const std::vector & t_Values); + void setPropertiesAtIndex(size_t index, size_t i, double t_Wavelength, const std::vector & t_Values); void addProperties(double t_Wavelength, const SquareMatrix & t_Matrix); void setPropertiesAtIndex(size_t index, double t_Wavelength, const SquareMatrix & t_Matrix); diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index 46fabb8a..d2a9c088 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -116,14 +116,15 @@ namespace MultiLayerOptics { const size_t matrixSize = m_Lambda.size(); const size_t numberOfLayers = m_Layer.size(); + const size_t seriesSize = m_CombinedLayerWavelengths.size(); for(Side aSide : EnumSide()) { - m_TotA[aSide] = CMatrixSeries(numberOfLayers, matrixSize); - m_TotJSC[aSide] = CMatrixSeries(numberOfLayers, matrixSize); + m_TotA[aSide] = CMatrixSeries(numberOfLayers, matrixSize, seriesSize); + m_TotJSC[aSide] = CMatrixSeries(numberOfLayers, matrixSize, seriesSize); for(PropertySimple aProperty : EnumPropertySimple()) { - m_Tot[{aSide, aProperty}] = CMatrixSeries(matrixSize, matrixSize); + m_Tot[{aSide, aProperty}] = CMatrixSeries(matrixSize, matrixSize, seriesSize); } } @@ -159,12 +160,12 @@ namespace MultiLayerOptics auto totA{layer.getLayerAbsorptances(layerNumber + 1, aSide)}; std::lock_guard lock_abs(absorptanceMutex); - m_TotA.at(aSide).addProperties( + m_TotA.at(aSide).setPropertiesAtIndex(index, layerNumber, m_CombinedLayerWavelengths[index], totA); auto totJSC{layer.getLayerJSC(layerNumber + 1, aSide)}; std::lock_guard lock_jsc(jscMutex); - m_TotJSC.at(aSide).addProperties( + m_TotJSC.at(aSide).setPropertiesAtIndex(index, layerNumber, m_CombinedLayerWavelengths[index], totJSC); } for(auto aProperty : EnumPropertySimple()) @@ -173,7 +174,7 @@ namespace MultiLayerOptics std::lock_guard lock_tot(totMutex); m_Tot.at({aSide, aProperty}) - .addProperties(m_CombinedLayerWavelengths[index], tot); + .setPropertiesAtIndex(index, m_CombinedLayerWavelengths[index], tot); } } }); From 45590849e3c34cb2cbced9e300bbf0a25bf7824c Mon Sep 17 00:00:00 2001 From: vidanovic Date: Fri, 12 Aug 2022 19:38:13 -0700 Subject: [PATCH 78/81] VenetianCell calcs are now using mutex locks --- src/SingleLayerOptics/src/VenetianCell.cpp | 7 +++++++ src/Viewer/src/Geometry2DBeam.cpp | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/SingleLayerOptics/src/VenetianCell.cpp b/src/SingleLayerOptics/src/VenetianCell.cpp index 1dc4a68d..45c6cfe1 100644 --- a/src/SingleLayerOptics/src/VenetianCell.cpp +++ b/src/SingleLayerOptics/src/VenetianCell.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "VenetianCell.hpp" #include "VenetianCellDescription.hpp" @@ -12,6 +13,9 @@ using namespace Viewer; using namespace FenestrationCommon; +std::mutex cellEnergyTMutex; +std::mutex cellEnergyRMutex; + namespace SingleLayerOptics { //////////////////////////////////////////////////////////////////////////////////////////// @@ -173,6 +177,8 @@ namespace SingleLayerOptics double CVenetianCellEnergy::T_dir_dir(const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) { + std::lock_guard lock_abs(cellEnergyTMutex); + calculateSlatEnergiesFromBeam(t_IncomingDirection); assert(m_CurrentSlatEnergies != nullptr); @@ -200,6 +206,7 @@ namespace SingleLayerOptics double CVenetianCellEnergy::R_dir_dir(const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) { + std::lock_guard lock_abs(cellEnergyRMutex); calculateSlatEnergiesFromBeam(t_IncomingDirection); assert(m_CurrentSlatEnergies != nullptr); diff --git a/src/Viewer/src/Geometry2DBeam.cpp b/src/Viewer/src/Geometry2DBeam.cpp index 338786d1..9005601c 100755 --- a/src/Viewer/src/Geometry2DBeam.cpp +++ b/src/Viewer/src/Geometry2DBeam.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "Geometry2DBeam.hpp" #include "Geometry2D.hpp" @@ -10,6 +11,8 @@ #include "ViewerConstants.hpp" #include "WCECommon.hpp" +std::mutex beamViewFactorsMutex; +std::mutex directToDirectMutex; using namespace FenestrationCommon; @@ -261,6 +264,7 @@ namespace Viewer std::shared_ptr> CDirect2DRays::beamViewFactors(double const t_ProfileAngle) { + std::lock_guard lock(beamViewFactorsMutex); calculateAllProperties(t_ProfileAngle); assert(m_CurrentResult != nullptr); return m_CurrentResult->beamViewFactors(); @@ -268,6 +272,7 @@ namespace Viewer double CDirect2DRays::directToDirect(double const t_ProfileAngle) { + std::lock_guard lock(directToDirectMutex); calculateAllProperties(t_ProfileAngle); assert(m_CurrentResult != nullptr); return m_CurrentResult->directToDirect(); From 20187cafeda0fa2e086da7abd34473b7244b7401 Mon Sep 17 00:00:00 2001 From: vidanovic Date: Fri, 12 Aug 2022 20:22:14 -0700 Subject: [PATCH 79/81] CMaterial setBandWavelengths is now locked with mutext. --- src/SingleLayerOptics/src/MaterialDescription.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index 3898dd4e..f2492ad1 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -10,6 +10,7 @@ #include "OpticalSurface.hpp" std::mutex materialWL; +std::mutex baseMaterialMutex; std::mutex materialSampleWL; std::mutex dualBandMaterialMutexRatio; std::mutex dualBandMaterialMutexRadiation; @@ -218,6 +219,7 @@ namespace SingleLayerOptics void CMaterial::setBandWavelengths(const std::vector & wavelengths) { + std::lock_guard lock(baseMaterialMutex); // Trimming is necessary in order to keep data within integration range m_Wavelengths = trimWavelengthToRange(wavelengths); m_WavelengthsCalculated = true; From 115d21921bde60052e813c18b85317ba079be3ae Mon Sep 17 00:00:00 2001 From: vidanovic Date: Sat, 13 Aug 2022 12:48:25 -0700 Subject: [PATCH 80/81] Quarter Basis XML file on home computer that I will need for testing of the speed. --- .../src/EquivalentBSDFLayer.cpp | 6 + ...aneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp | 16 +- ...aneBSDF_102_XMLLayer_QuarterBasis.unit.cpp | 595 ++++++++++++++++++ 3 files changed, 609 insertions(+), 8 deletions(-) create mode 100644 src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_XMLLayer_QuarterBasis.unit.cpp diff --git a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp index d2a9c088..c67c2272 100644 --- a/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp +++ b/src/MultiLayerOptics/src/EquivalentBSDFLayer.cpp @@ -4,6 +4,8 @@ #include #ifdef STL_MULTITHREADING # include +#else +# include #endif #include "EquivalentBSDFLayer.hpp" @@ -145,7 +147,11 @@ namespace MultiLayerOptics std::mutex jscMutex; std::mutex totMutex; +#ifdef STL_MULTITHREADING std::for_each(std::execution::par, +#else + std::for_each( +#endif wavelengthIndexes.begin(), wavelengthIndexes.end(), [&](const size_t & index) { diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp index b5de7d9c..34da86b1 100644 --- a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_BSDFMaterial_2011-SA1.unit.cpp @@ -263,7 +263,7 @@ return { {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243,0.022243}, {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243,0.022243}, {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213,0.022243}, - {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213}, + {0.022252,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022174,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022223,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.022461,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023551,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023628,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023737,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.023844,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.022243,0.338213} }; } @@ -414,7 +414,7 @@ return { {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868,0.003868}, {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868,0.003868}, {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213,0.003868}, - {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213}, + {0.02175,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.021508,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.020777,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.019569,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.01782,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.015528,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.012645,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.009169,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.003868,0.338213} }; } @@ -565,7 +565,7 @@ return { {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, - {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368}, + {0.148154,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.148805,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.150762,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.154041,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.158675,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.164737,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.172379,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.181949,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368,0.198368} }; } @@ -716,7 +716,7 @@ return { {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, - {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664}, + {0.167364,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.16799,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.169873,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.173027,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.177485,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.183315,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.190665,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.199871,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664,0.215664} }; } @@ -867,7 +867,7 @@ return { {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169,0.0169}, {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169,0.0169}, {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522,0.0169}, - {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522}, + {0.014954,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014938,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.014928,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.015363,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.016716,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.017184,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.01751,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.018179,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.0169,0.335522} }; } @@ -1018,7 +1018,7 @@ return { {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043,0.002043}, {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043,0.002043}, {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522,0.002043}, - {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522}, + {0.014456,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.014274,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.013728,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.012828,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.011542,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.009882,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.007838,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.005451,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.002043,0.335522} }; } @@ -1169,7 +1169,7 @@ return { {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, - {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156}, + {0.153571,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.154227,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.156199,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.159502,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.16417,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.170277,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.177975,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.187616,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156,0.204156} }; } @@ -1320,7 +1320,7 @@ return { {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, - {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058}, + {0.178254,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.178873,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.180737,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.183858,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.18827,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.194041,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.201316,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.210428,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058,0.226058} }; } diff --git a/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_XMLLayer_QuarterBasis.unit.cpp b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_XMLLayer_QuarterBasis.unit.cpp new file mode 100644 index 00000000..2444ae1e --- /dev/null +++ b/src/MultiLayerOptics/tst/units/MultiPaneBSDF_102_XMLLayer_QuarterBasis.unit.cpp @@ -0,0 +1,595 @@ +#include +#include + +#include "WCESpectralAveraging.hpp" +#include "WCEMultiLayerOptics.hpp" +#include "WCESingleLayerOptics.hpp" +#include "WCECommon.hpp" + +// Example of predefined XML layer + +using MultiLayerOptics::CMultiPaneBSDF; +using FenestrationCommon::CSeries; +using SpectralAveraging::CSpectralSampleData; + +class MultiPaneBSDF_102_XMLLayer_QuarterBasis : public testing::Test +{ +private: + std::unique_ptr m_Layer; + + CSeries loadSolarRadiationFile() + { + // Full ASTM E891-87 Table 1 (Solar radiation) + CSeries aSolarRadiation( + {{0.3000, 0.0}, {0.3050, 3.4}, {0.3100, 15.6}, {0.3150, 41.1}, {0.3200, 71.2}, + {0.3250, 100.2}, {0.3300, 152.4}, {0.3350, 155.6}, {0.3400, 179.4}, {0.3450, 186.7}, + {0.3500, 212.0}, {0.3600, 240.5}, {0.3700, 324.0}, {0.3800, 362.4}, {0.3900, 381.7}, + {0.4000, 556.0}, {0.4100, 656.3}, {0.4200, 690.8}, {0.4300, 641.9}, {0.4400, 798.5}, + {0.4500, 956.6}, {0.4600, 990.0}, {0.4700, 998.0}, {0.4800, 1046.1}, {0.4900, 1005.1}, + {0.5000, 1026.7}, {0.5100, 1066.7}, {0.5200, 1011.5}, {0.5300, 1084.9}, {0.5400, 1082.4}, + {0.5500, 1102.2}, {0.5700, 1087.4}, {0.5900, 1024.3}, {0.6100, 1088.8}, {0.6300, 1062.1}, + {0.6500, 1061.7}, {0.6700, 1046.2}, {0.6900, 859.2}, {0.7100, 1002.4}, {0.7180, 816.9}, + {0.7244, 842.8}, {0.7400, 971.0}, {0.7525, 956.3}, {0.7575, 942.2}, {0.7625, 524.8}, + {0.7675, 830.7}, {0.7800, 908.9}, {0.8000, 873.4}, {0.8160, 712.0}, {0.8237, 660.2}, + {0.8315, 765.5}, {0.8400, 799.8}, {0.8600, 815.2}, {0.8800, 778.3}, {0.9050, 630.4}, + {0.9150, 565.2}, {0.9250, 586.4}, {0.9300, 348.1}, {0.9370, 224.2}, {0.9480, 271.4}, + {0.9650, 451.2}, {0.9800, 549.7}, {0.9935, 630.1}, {1.0400, 582.9}, {1.0700, 539.7}, + {1.1000, 366.2}, {1.1200, 98.1}, {1.1300, 169.5}, {1.1370, 118.7}, {1.1610, 301.9}, + {1.1800, 406.8}, {1.2000, 375.2}, {1.2350, 423.6}, {1.2900, 365.7}, {1.3200, 223.4}, + {1.3500, 30.1}, {1.3950, 1.4}, {1.4425, 51.6}, {1.4625, 97.0}, {1.4770, 97.3}, + {1.4970, 167.1}, {1.5200, 239.3}, {1.5390, 248.8}, {1.5580, 249.3}, {1.5780, 222.3}, + {1.5920, 227.3}, {1.6100, 210.5}, {1.6300, 224.7}, {1.6460, 215.9}, {1.6780, 202.8}, + {1.7400, 158.2}, {1.8000, 28.6}, {1.8600, 1.8}, {1.9200, 1.1}, {1.9600, 19.7}, + {1.9850, 84.9}, {2.0050, 25.0}, {2.0350, 92.5}, {2.0650, 56.3}, {2.1000, 82.7}, + {2.1480, 76.2}, {2.1980, 66.4}, {2.2700, 65.0}, {2.3600, 57.6}, {2.4500, 19.8}, + {2.4940, 17.0}, {2.5370, 3.0}, {2.9410, 4.0}, {2.9730, 7.0}, {3.0050, 6.0}, + {3.0560, 3.0}, {3.1320, 5.0}, {3.1560, 18.0}, {3.2040, 1.2}, {3.2450, 3.0}, + {3.3170, 12.0}, {3.3440, 3.0}, {3.4500, 12.2}, {3.5730, 11.0}, {3.7650, 9.0}, + {4.0450, 6.9} + + }); + + return aSolarRadiation; + } + + std::shared_ptr loadSampleData_NFRC_102() + { + auto aMeasurements_102 = CSpectralSampleData::create( + {{0.300, 0.0020, 0.0470, 0.0480}, {0.305, 0.0030, 0.0470, 0.0480}, + {0.310, 0.0090, 0.0470, 0.0480}, {0.315, 0.0350, 0.0470, 0.0480}, + {0.320, 0.1000, 0.0470, 0.0480}, {0.325, 0.2180, 0.0490, 0.0500}, + {0.330, 0.3560, 0.0530, 0.0540}, {0.335, 0.4980, 0.0600, 0.0610}, + {0.340, 0.6160, 0.0670, 0.0670}, {0.345, 0.7090, 0.0730, 0.0740}, + {0.350, 0.7740, 0.0780, 0.0790}, {0.355, 0.8180, 0.0820, 0.0820}, + {0.360, 0.8470, 0.0840, 0.0840}, {0.365, 0.8630, 0.0850, 0.0850}, + {0.370, 0.8690, 0.0850, 0.0860}, {0.375, 0.8610, 0.0850, 0.0850}, + {0.380, 0.8560, 0.0840, 0.0840}, {0.385, 0.8660, 0.0850, 0.0850}, + {0.390, 0.8810, 0.0860, 0.0860}, {0.395, 0.8890, 0.0860, 0.0860}, + {0.400, 0.8930, 0.0860, 0.0860}, {0.410, 0.8930, 0.0860, 0.0860}, + {0.420, 0.8920, 0.0860, 0.0860}, {0.430, 0.8920, 0.0850, 0.0850}, + {0.440, 0.8920, 0.0850, 0.0850}, {0.450, 0.8960, 0.0850, 0.0850}, + {0.460, 0.9000, 0.0850, 0.0850}, {0.470, 0.9020, 0.0840, 0.0840}, + {0.480, 0.9030, 0.0840, 0.0840}, {0.490, 0.9040, 0.0850, 0.0850}, + {0.500, 0.9050, 0.0840, 0.0840}, {0.510, 0.9050, 0.0840, 0.0840}, + {0.520, 0.9050, 0.0840, 0.0840}, {0.530, 0.9040, 0.0840, 0.0840}, + {0.540, 0.9040, 0.0830, 0.0830}, {0.550, 0.9030, 0.0830, 0.0830}, + {0.560, 0.9020, 0.0830, 0.0830}, {0.570, 0.9000, 0.0820, 0.0820}, + {0.580, 0.8980, 0.0820, 0.0820}, {0.590, 0.8960, 0.0810, 0.0810}, + {0.600, 0.8930, 0.0810, 0.0810}, {0.610, 0.8900, 0.0810, 0.0810}, + {0.620, 0.8860, 0.0800, 0.0800}, {0.630, 0.8830, 0.0800, 0.0800}, + {0.640, 0.8790, 0.0790, 0.0790}, {0.650, 0.8750, 0.0790, 0.0790}, + {0.660, 0.8720, 0.0790, 0.0790}, {0.670, 0.8680, 0.0780, 0.0780}, + {0.680, 0.8630, 0.0780, 0.0780}, {0.690, 0.8590, 0.0770, 0.0770}, + {0.700, 0.8540, 0.0760, 0.0770}, {0.710, 0.8500, 0.0760, 0.0760}, + {0.720, 0.8450, 0.0750, 0.0760}, {0.730, 0.8400, 0.0750, 0.0750}, + {0.740, 0.8350, 0.0750, 0.0750}, {0.750, 0.8310, 0.0740, 0.0740}, + {0.760, 0.8260, 0.0740, 0.0740}, {0.770, 0.8210, 0.0740, 0.0740}, + {0.780, 0.8160, 0.0730, 0.0730}, {0.790, 0.8120, 0.0730, 0.0730}, + {0.800, 0.8080, 0.0720, 0.0720}, {0.810, 0.8030, 0.0720, 0.0720}, + {0.820, 0.8000, 0.0720, 0.0720}, {0.830, 0.7960, 0.0710, 0.0710}, + {0.840, 0.7930, 0.0700, 0.0710}, {0.850, 0.7880, 0.0700, 0.0710}, + {0.860, 0.7860, 0.0700, 0.0700}, {0.870, 0.7820, 0.0740, 0.0740}, + {0.880, 0.7800, 0.0720, 0.0720}, {0.890, 0.7770, 0.0730, 0.0740}, + {0.900, 0.7760, 0.0720, 0.0720}, {0.910, 0.7730, 0.0720, 0.0720}, + {0.920, 0.7710, 0.0710, 0.0710}, {0.930, 0.7700, 0.0700, 0.0700}, + {0.940, 0.7680, 0.0690, 0.0690}, {0.950, 0.7660, 0.0680, 0.0680}, + {0.960, 0.7660, 0.0670, 0.0680}, {0.970, 0.7640, 0.0680, 0.0680}, + {0.980, 0.7630, 0.0680, 0.0680}, {0.990, 0.7620, 0.0670, 0.0670}, + {1.000, 0.7620, 0.0660, 0.0670}, {1.050, 0.7600, 0.0660, 0.0660}, + {1.100, 0.7590, 0.0660, 0.0660}, {1.150, 0.7610, 0.0660, 0.0660}, + {1.200, 0.7650, 0.0660, 0.0660}, {1.250, 0.7700, 0.0650, 0.0650}, + {1.300, 0.7770, 0.0670, 0.0670}, {1.350, 0.7860, 0.0660, 0.0670}, + {1.400, 0.7950, 0.0670, 0.0680}, {1.450, 0.8080, 0.0670, 0.0670}, + {1.500, 0.8190, 0.0690, 0.0690}, {1.550, 0.8290, 0.0690, 0.0690}, + {1.600, 0.8360, 0.0700, 0.0700}, {1.650, 0.8400, 0.0700, 0.0700}, + {1.700, 0.8420, 0.0690, 0.0700}, {1.750, 0.8420, 0.0690, 0.0700}, + {1.800, 0.8410, 0.0700, 0.0700}, {1.850, 0.8400, 0.0690, 0.0690}, + {1.900, 0.8390, 0.0680, 0.0680}, {1.950, 0.8390, 0.0710, 0.0710}, + {2.000, 0.8390, 0.0690, 0.0690}, {2.050, 0.8400, 0.0680, 0.0680}, + {2.100, 0.8410, 0.0680, 0.0680}, {2.150, 0.8390, 0.0690, 0.0690}, + {2.200, 0.8300, 0.0700, 0.0700}, {2.250, 0.8300, 0.0700, 0.0700}, + {2.300, 0.8320, 0.0690, 0.0690}, {2.350, 0.8320, 0.0690, 0.0700}, + {2.400, 0.8320, 0.0700, 0.0700}, {2.450, 0.8260, 0.0690, 0.0690}, + {2.500, 0.8220, 0.0680, 0.0680}}); + + return aMeasurements_102; + } + + // clang-format off + +static std::vector> TransmittanceFrontSolar(){ +return { + {10.252821201394584,0.006095731055623178,0.0028763605222179344,0.0037395445625015163,0.0019385552311439438,0.006952343836881971,0.002939880436034285,0.009578441620679631,0.0035352501222633333,0.0,0.00045026027504590474,0.0003444858974939927,0.000283429509924452,0.0005390879062683885,0.00030017347333979416,5.002892523054174e-05,0.0,0.0,0.0,0.0,0.0008566134231662218,0.0008234525068723576,0.000238914302856167,5.554259136382759e-05,0.0,0.0,0.00012782913313575458,0.0004890589290088758,0.0007754221353814786,0.0,0.000532135665104177,0.0,0.00010005783745384079,0.00018337168547785397,0.0,0.0,0.0,0.00024267118477249702,0.0008560053430235248,0.00015008680170611066,0.000605860716870816}, + {0.007998908143137933,10.98786727473673,0.008763697586615075,0.00016176938087921725,0.0,0.0,0.0,0.0,0.018699841182525774,0.005102192065355266,0.0022595610468689924,0.00010784622120681893,0.0003653573168709007,0.0003054913278328044,0.0004313848287484311,5.392311761326501e-05,0.0,0.001190364602076078,0.0006168081260295345,0.0006168081260295345,0.004111364403743203,0.000461317893366035,0.00028744417430139665,0.0,2.9932980499337027e-05,5.6078844473677666e-05,0.00011973193601705921,0.0005810498714422276,0.0006335824762535476,0.0,0.001584359141665907,0.0,0.00016176938087921725,0.00023162749842563343,0.0,0.0,0.0,0.0002016944338080297,0.0007368762967783469,0.00026961558806632503,0.0005392311761326501}, + {0.0033431206857027274,0.007840405677402662,11.5659518370803,0.005591685982013421,0.00041789001561428534,0.0010108023669995166,0.0005735564760465436,0.0006168081260295345,0.0,0.0006906931160876819,0.004198081924895075,0.0004432705996375159,0.00032948157710442134,0.00016176938087921725,0.0002456254789918193,0.00010784622120681893,0.0,0.0,0.0,0.0,0.0,0.0002755584034123118,0.00019764512064569662,5.7972402736175856e-05,2.8039422236838826e-05,2.9932980499337027e-05,5.392311761326501e-05,0.00040739471967392543,5.392311761326501e-05,0.0,0.0,0.0,0.00010784622120681893,0.00039150323692408584,0.0,0.0,0.0,0.00014372208715069832,0.0010962907983032605,0.00032353862156132336,0.0008695017825788164}, + {0.0037610104209227905,0.0,0.004318145328942108,11.764375612481514,0.005087785319081855,0.0,0.0,0.0,0.0005735564760465436,5.392311761326501e-05,0.00021569241437421554,0.0003054913278328044,0.00019170230529970983,0.000461317893366035,0.00032353862156132336,5.392311761326501e-05,0.0,0.0,0.0,0.0,0.0,0.0005990970249736353,8.385609811260203e-05,2.8039422236838826e-05,0.0,0.0,5.9865960998674054e-05,0.0005751069158991295,5.392311761326501e-05,0.0,0.0,0.00041789001561428534,0.00010784622120681893,0.0004592055434918226,0.0,0.0,0.0,0.000363463814687247,0.0012281271145648744,0.00032353862156132336,0.001265010871560768}, + {0.002925230950482665,0.0,0.0,0.0035818706670368403,11.534748166044034,0.007223506142856636,0.0,0.0,0.0,0.0,0.00029954851248681764,0.0003534716861789271,0.0002515682943378061,0.00041333767521702336,0.0048564433531027166,0.0,0.0,0.0,0.0005735564760465436,0.0,0.0005054011834997583,0.0004373277842915291,0.00011378907861193908,0.0,0.0,0.0,0.00017365501157119088,0.00019170230529970983,0.0004718131893063949,0.0,0.0006168081260295345,0.0,0.00032353862156132336,0.0002496747921541524,0.0,0.0,0.0,0.0003772430877599855,0.0006530201986657448,0.0006958467710076252,0.0005511168068246236}, + {0.008922198741507355,0.00041789001561428534,0.0,0.0006419237283998148,0.011633075781495413,11.005802691170524,0.017183637464490954,0.0,0.0,5.392311761326501e-05,0.0004853080024405406,0.00040739471967392543,0.0007668092211988393,0.00022757818526330037,0.0005340775212127069,0.009698981956718181,0.0025270052620772966,0.0,0.0006168081260295345,0.0,0.0,0.0007368762967783469,0.00023162749842563343,5.7972402736175856e-05,0.0,0.0,0.00014182844476993343,0.0004971937733296255,0.0013615163942270751,0.00041789001561428534,0.0,0.0,0.00037230814033348974,0.00044731991279984895,0.0,0.0,0.0,0.0002637162338248054,0.0008687126130399602,0.0008441213296398845,0.0011787564214671379}, + {0.0037422743878560124,0.0,0.0,0.00010784622120681893,0.0003183849757541924,0.013713987301717133,10.437736614392174,0.016708355237865416,0.0,0.0,0.00026961558806632503,0.0003054913278328044,0.00021569241437421554,0.00029954851248681764,0.0006419237283998148,0.0020216044900560597,0.009137062121294148,0.008159545236068383,0.0006168081260295345,0.0,0.0,0.0006050399805167332,0.00034541652095872806,5.6078844473677666e-05,2.9932980499337027e-05,0.0,0.00031169645197381686,0.0006888960786293353,0.00010784622120681893,0.0018465824164537118,0.0,0.0005054011834997583,5.392311761326501e-05,0.00037156244101191316,0.0,0.0,0.0,0.0002335210006092872,0.0008627697976939734,0.0009063855395747098,0.0016460178311647154}, + {0.007961635521414746,0.0,0.0,5.392311761326501e-05,0.0,0.0,0.012693460928978524,10.270453421327193,0.020236195851942435,0.00010784622120681893,0.0002456254789918193,0.0005031365886756124,0.0003594145015249139,0.00033542439245040813,0.00040739471967392543,0.0008441213296398845,0.0,0.004317657442995186,0.008768737581634024,0.004934465849418943,0.0005735564760465436,0.0007428191121243335,0.0002556176075001392,0.0,0.0,2.9932980499337027e-05,0.0002693968805728777,0.0005152409268610332,0.00010784622120681893,0.0,0.0005735564760465436,0.0005054011834997583,0.0004262311829413002,8.790539725522399e-05,0.0,0.0,0.0,0.00037345594319556686,0.0015114258004856652,0.0011053956655599426,0.0009166928311889718}, + {0.00741639250388842,0.012042117123250054,0.0,0.0,0.0003183849757541924,0.0,0.0,0.01825601918764997,10.441840183836536,0.0010108023669995166,0.00026961558806632503,0.0004732035240580085,0.00046109918587258764,0.0002515682943378061,0.0005152409268610332,5.392311761326501e-05,0.0005054011834997583,0.0,0.00123361639225618,0.008776353642492138,0.006249924127891341,0.0008447225039654546,0.0003214264118842223,2.9932980499337027e-05,0.0,0.0,0.00020953089153478142,0.0007428191121243335,0.00021569241437421554,0.0,0.0005054011834997583,0.0,0.0005257362228013932,0.00034541652095872806,0.0,0.0,0.0,0.0003713002724139987,0.001354020615480501,0.00037746179525343287,0.0010364248092651644}, + {0.0,0.01116231688669316,0.0,0.0007386844375540798,0.0,0.0,0.0004422729006645934,0.0,0.0,9.684679559821937,0.0045874515092646125,0.0003931033930044141,0.00015196423789650833,0.0003355145868154964,0.0002621327251153388,4.718772812234254e-05,0.0,0.0,0.0005397643059787271,0.0,0.009055237240314502,0.0026116338719667067,0.00015196423789650833,2.6194133577815076e-05,0.0,0.0,0.00022534609959666595,0.000545259142923583,4.718772812234254e-05,0.0005019151015822435,0.0,0.0005019151015822435,0.0006044205235251729,0.0002567408212819577,0.0,0.0,0.0,0.00038085386199702075,0.0012320811266948706,0.0007431943634998087,0.0009423462963935819}, + {0.0,0.000557232869014114,0.004179246190955784,9.437544397613785e-05,0.0,0.0,0.0,0.0,0.0,0.004972417585870694,10.230031207591828,0.001653641905800631,4.718772812234254e-05,0.00015196423789650833,0.0003565081568229293,0.0,0.0,0.0,0.0,0.0,0.0004422729006645934,0.0006710291736309928,0.00010311950751327185,0.0,2.453709451127936e-05,2.453709451127936e-05,0.00022534609959666595,0.00036170879400459496,9.437544397613785e-05,0.0004422729006645934,0.0,0.0004422729006645934,0.00014156320890412212,0.00015196423789650833,0.0,0.0,0.0,0.0003301226829821153,0.0005766537419234022,0.000507255722888096,0.0006448350891273669}, + {0.0004422729006645934,0.0,0.001213351005507725,0.0008830369006767716,0.0,0.0008079654146485673,0.0,0.0,0.0,4.718772812234254e-05,0.0003303140723193033,10.772750025120658,0.0,0.0002463396696040989,0.00046736735527769653,0.0,0.0004422729006645934,0.0,0.0,0.0,0.0,0.0004980713657270515,5.238826715563015e-05,2.6194133577815076e-05,0.0,0.0,7.692537393545676e-05,0.0003827023640120279,9.437544397613785e-05,0.0006443089236472227,0.0005019151015822435,0.0,4.718772812234254e-05,0.0002567408212819577,0.0,0.0,0.0,0.00019395150059684679,0.0006396345746311736,0.0003258041463735745,0.000981040272467883}, + {0.0,0.0,0.0,0.0009437543900737619,0.0,0.0,0.0,0.0,0.0,9.437544397613785e-05,0.00028312629512277173,0.00021494507060427974,11.152203923190337,7.85824130019925e-05,0.00028312629512277173,4.718772812234254e-05,0.0,0.0,0.0,0.0,0.0,0.00028312629512277173,0.00010477654657980755,2.6194133577815076e-05,0.0,0.0,0.00019583791242287394,0.00030932050231187035,0.0,0.0,0.0,0.0004422729006645934,0.00036569251398397374,0.0002935274468006305,0.0,0.0,0.0,0.00031286402681571674,0.0006186410046237407,0.0012959168317754149,0.0005924467974346421}, + {0.0,0.0,0.0,4.718772812234254e-05,0.0017705835696484398,0.0,0.0005019151015822435,0.0,0.0005019151015822435,0.0003258041463735745,0.000545259142923583,0.0002411391551079058,0.00012056957755395292,11.054811287656168,0.0006351246486854448,0.0,0.0004422729006645934,0.0,0.0,0.0,0.0,0.00047707779571961846,5.238826715563015e-05,2.6194133577815076e-05,0.0,0.0,7.17248226336219e-05,0.0003565081568229293,4.718772812234254e-05,0.00036569251398397374,0.0004422729006645934,0.0,9.437544397613785e-05,7.338186170015762e-05,0.0,0.0,0.0,0.00017815844508560697,0.0006186410046237407,0.0004600679456915643,0.000545259142923583}, + {0.0,0.0,0.0,0.0003258041463735745,0.002554735950613669,0.0007208892778161921,0.0,0.0,0.0,0.00036569251398397374,0.00023593864061171267,0.00028832693230443736,0.00020435252958923302,0.0004935614477558783,10.327875325665007,0.004179246190955784,0.0,0.0,0.0,0.0009820372066433206,0.0,0.00030932050231187035,4.718772812234254e-05,2.6194133577815076e-05,0.0,2.453709451127936e-05,0.00030392847579301666,0.0004560842257121856,0.00018875086341518113,0.0,0.0,0.00036569251398397374,9.437544397613785e-05,0.00038251097467483994,0.0,0.0,0.0,0.0002725338767931975,0.0009489549542575713,0.000507255722888096,0.000807391868038922}, + {0.0,0.0,0.0,0.00037299180885918913,0.0004422729006645934,0.006735626286392823,0.001386461164231487,0.0005397643059787271,0.0,4.718772812234254e-05,0.000545259142923583,0.00043509065570475277,0.0004402911702009459,0.00036170879400459496,0.004807071920796987,9.6778533401289,0.007592466939007661,0.0,0.0,0.0,0.0004422729006645934,0.0006658286591347997,9.95759952779727e-05,2.453709451127936e-05,0.0,2.6194133577815076e-05,0.00030392847579301666,0.0030087212732613604,0.0017660733265607645,0.001309880892261784,0.0010038301209652203,0.0004422729006645934,0.0006914966683321038,0.00038251097467483994,2.453709451127936e-05,0.0,0.0,7.692537393545676e-05,0.001022336815957729,0.0007459837324292951,0.000791598812527682}, + {0.0,0.0,0.0,0.00046736735527769653,4.718772812234254e-05,0.002653637617460283,0.005928473655025387,0.0005397643059787271,0.0,0.00027861637715159856,0.0003669093085007881,0.0004822783102158116,0.0001991520150930399,0.0004298900185230869,0.0001677572934077482,0.008994764344036727,9.02563651148876,0.011414675014838987,0.001079528734642927,0.0005019151015822435,0.0,0.0006028479491125008,9.95759952779727e-05,2.6194133577815076e-05,2.453709451127936e-05,7.85824130019925e-05,0.00015550776240035475,0.001138396536883245,0.010698873661220543,0.0,0.0,0.0,0.00014156320890412212,0.00041952702202719327,0.0,0.0,0.0,0.00026733323961153187,0.0010537315376430208,0.001576254363421507,0.0010643240786580676}, + {0.0,0.0004422729006645934,0.0,9.437544397613785e-05,4.718772812234254e-05,0.0,0.005634613730594128,0.0021590569785439637,0.0,0.0,0.0005662527129310161,0.0005766537419234022,0.00034591573849335514,0.0003827023640120279,0.0006134403674420751,0.0,0.010445709814636522,8.405493345939039,0.014999857125520976,0.0,0.0,0.0005714532274272092,0.0002026955395968863,2.453709451127936e-05,2.453709451127936e-05,5.073122808909444e-05,0.00031972153130425653,0.0010747251076504538,0.0005838361095687157,0.013516847401806507,0.0019480183360713517,0.0004422729006645934,0.00018875086341518113,0.00029707097130447687,0.0,0.0,0.0,0.00029707097130447687,0.0014215233656878223,0.0012208457058290728,0.0011691005393580445}, + {0.0,0.0,0.0,0.00018875086341518113,0.0,0.0,0.0,0.015886676795347634,0.0005397643059787271,0.00027861637715159856,0.0004298900185230869,0.0005136730319011035,0.0004140969630118471,0.0006448350891273669,0.0005714532274272092,4.718772812234254e-05,0.0,0.016079378867091966,8.297887144814547,0.0160197414588823,0.0,0.0008125923825351149,0.00017815844508560697,2.453709451127936e-05,5.073122808909444e-05,0.0,0.0002498831941079453,0.0008019998415200681,0.0,0.0014461034798600536,0.013703108486241627,0.0015057457954886205,0.00014156320890412212,0.0004105915936899657,0.0,0.0,0.0,0.0003478021503193823,0.0016824386399190688,0.0018475708322705274,0.0008335859525425478}, + {0.0004422729006645934,0.0,0.0,0.0004600679456915643,0.0,0.0,0.0,0.0032007363861049336,0.005634613730594128,9.437544397613785e-05,0.0006875128256672527,0.00036170879400459496,0.0002987279612968236,0.000387902878508221,0.00028312629512277173,0.00027861637715159856,0.0,0.0,0.018162737682213905,8.325605473629217,0.013839829176858475,0.0007392105208349572,0.00019749490241522066,2.6194133577815076e-05,0.0,5.073122808909444e-05,0.00030392847579301666,0.0007863982980314889,9.437544397613785e-05,0.00036569251398397374,0.0010416794075609704,0.017472521482158873,0.0027952007036789327,0.0006062000842791592,0.0,0.0,0.0,0.0004754588382237644,0.0013630515492130007,0.0003303140723193033,0.001434777157033647}, + {0.0,0.004711841003289262,0.00036569251398397374,0.00018875086341518113,0.0003258041463735745,0.0,0.0005019151015822435,0.0,0.006311105027088721,0.00529065151288029,0.0004298900185230869,0.0004612847402083787,0.0005032718802232446,0.0005084725174049103,0.00018875086341518113,4.718772812234254e-05,0.0004422729006645934,0.0,0.0,0.0074342193707684495,8.81858514687423,0.0008283854380463549,0.00020103842691906706,2.6194133577815076e-05,0.0,7.526832260037381e-05,0.0001991520150930399,0.0005608606864121624,9.437544397613785e-05,0.0004422729006645934,0.0,0.0004422729006645934,0.007214591598107722,0.0004296986291858989,0.0,0.0,0.0,0.00029541385862665763,0.0010643240786580676,0.00014156320890412212,0.001459000176735182}, + {0.0004342211946790636,0.0,0.0,0.0001853145993925602,0.0,0.0,0.0004342211946790636,0.0,0.000492777592090785,0.0041031618061333,0.0002316433094666743,0.0003757351568637679,0.0004477810805623147,0.0004477810805623147,0.0002367491470933737,0.000359034976071785,0.0,0.0,0.0,0.0,0.00027354408547782173,9.773515633544305,0.00022124360872233974,2.5717261805211927e-05,0.0,0.0,0.00014757086101317224,0.000679424390028989,9.265731174147495e-05,0.0,0.0008684423893581274,0.0,0.003931130322353536,0.0002230957983277977,0.0,0.0,0.0,0.00027267815642315323,0.0008647389894215495,0.0005978446946407762,0.0009059617414170158}, + {0.0,0.0,0.0,0.0001389860097703942,0.00027354408547782173,0.0,0.0,0.0,0.0,0.0,0.0005102932325711954,0.00014409184739709358,0.0003396182424950006,9.265731174147495e-05,9.265731174147495e-05,0.000359034976071785,0.0,0.0,0.0,0.0,0.0,0.0004220637464859339,11.009359847849744,0.0,0.0,2.5717261805211927e-05,0.00017328807463760495,0.00016980906102152628,4.632866189333486e-05,0.0,0.0,0.0004342211946790636,0.000359034976071785,0.00012185352693679148,0.0,0.0,0.0,0.00022472262233841844,0.0008235161169741345,0.0008107272915889931,0.000725752979651155}, + {3.3394005696021995e-05,9.635553097954056e-05,7.281231523824529e-05,9.554119149423007e-05,0.00015863099978876945,6.980016132768749e-05,6.252559763826184e-05,8.997401007829373e-05,3.126280041511924e-05,0.0,4.632866189333486e-05,2.9567512300153725e-05,0.00015304793154382045,0.00014409184739709358,0.00019812105051126265,2.9567512300153725e-05,3.640615882364212e-05,8.997401007829373e-05,2.9991333741691856e-05,6.125413415681107e-05,6.980016132768749e-05,0.0001736593075415538,2.5717261805211927e-05,11.816336105574775,0.0,0.0,0.00013628680206611464,0.00020707713465798955,0.00011230232904221642,0.0001396003147055464,0.0,0.0005677972256538841,4.632866189333486e-05,7.204592369854679e-05,0.0,0.0,0.0,0.0008673641510975327,0.00038246926392446494,0.00047850378751132863,0.0002997344343542697}, + {0.00027405733122854396,6.980016132768749e-05,6.597367112379583e-05,8.870254418780401e-05,9.554119149423007e-05,0.0001456245984362724,0.0001250511648021808,0.0001524996342762101,0.00022736440638323528,0.00013194731948217348,7.589617341055091e-05,0.00017750958598134752,0.0001774051222226054,0.00016855346991485442,0.0006932530282987718,0.00041233013718504466,0.0002761885194654961,0.0001580334695941651,0.00018164334446736335,0.00028095347807916005,0.0003014270251285361,0.00031254079694079026,0.00016459870302366919,0.0,11.876562079609306,0.0,9.265731174147495e-05,0.00013503121095944276,0.0004913101260074596,0.00037813242345400454,0.00038580966926808223,0.00031560678865631675,0.00016151486032943887,0.00014013704858614214,0.0,0.0,0.0,5.9135031887650305e-05,0.0005006348250350439,0.0005611833772158797,0.0004256095224010089}, + {3.3394005696021995e-05,6.678801060910632e-05,7.281231523824529e-05,2.9567512300153725e-05,9.554119149423007e-05,0.0,9.251693137995369e-05,2.9991333741691856e-05,9.464813666085645e-05,6.597367112379583e-05,0.0003157951357539539,7.204592369854679e-05,5.1434523610423855e-05,0.00010546368571070462,9.265731174147495e-05,2.9567512300153725e-05,9.805081102422556e-05,2.9991333741691856e-05,0.0006807421343408646,0.00015504252727166227,7.281231523824529e-05,0.0001389860097703942,0.00016818223701090557,2.409038961381198e-05,0.0,11.78020052115406,2.5717261805211927e-05,5.1434523610423855e-05,0.000537310997798696,0.00016697000860553855,0.0001250511648021808,0.00010620632015132963,8.273481752500036e-05,5.528478217564618e-05,0.0,0.0,0.0,0.00012348047139936028,0.0004940051576426996,6.597367112379583e-05,0.000409919299273819}, + {0.0,0.0,0.00027354408547782173,0.00036620138517410184,0.000359034976071785,0.000359034976071785,0.0,0.0,0.0,0.0,0.00014409184739709358,0.0004322755421912809,0.00017491501910017374,7.204592369854679e-05,0.00011837457354668686,0.0,0.0007932561707508489,0.0,0.0,0.0,0.000359034976071785,0.000468392456560048,0.0001887936130086389,2.5717261805211927e-05,0.0,0.0,10.900978389496684,0.0006124843039571415,0.00027797189908884034,0.0007932561707508489,0.0,0.0,0.00027354408547782173,0.00029328953242088653,0.0,0.0,0.0,0.00015430364310244042,0.000695607944586327,0.0001389860097703942,0.0008809225439788873}, + {0.0,0.0,0.0,0.0,0.0,0.0007932561707508489,0.0,0.0,0.0,0.0,0.0003757351568637679,0.0004220637464859339,0.00021103193346894099,0.0004271697045645815,0.00044267512248366726,0.002424424288708059,0.000359034976071785,0.000492777592090785,0.0005299377407817784,0.0,0.0,0.0005661555938830274,0.00020063223272460644,0.0,2.409038961381198e-05,0.0,0.0002777839940498526,9.679086124336084,0.003106070294467234,0.0,0.0,0.0007932561707508489,0.0006789077716237208,0.0004202490174363255,0.0,0.0,0.0,0.00039105279019581413,0.0012610849200233101,0.0011769287574659,0.0010449477511874103}, + {0.0,0.000359034976071785,0.0,0.0001389860097703942,0.0,0.000359034976071785,0.0,0.0,0.0,9.265731174147495e-05,0.0009684740060484682,0.0006226959792105404,0.0005712615519616749,0.0005661555938830274,0.0005816611322540616,0.0018194133475750956,0.007556631255878718,0.0017368845691298652,0.0,0.000492777592090785,0.0,0.0008133044417207359,0.00025554579404149855,2.409038961381198e-05,0.0,5.1434523610423855e-05,0.0002539188495789298,0.0035221619129159553,8.26482246195335,0.010134757367598482,0.0,0.0004342211946790636,0.0007324028829707751,0.0005868043099846622,0.0,0.0,0.0,0.000518012154759305,0.007190827042935581,0.0004980209858421793,0.0012978805811194466}, + {0.0,0.0,0.00027354408547782173,0.0002316433094666743,0.0,0.000359034976071785,0.000492777592090785,0.0,0.0,9.265731174147495e-05,0.000787587107644355,0.0008492334510505152,0.0005043214658898277,0.0008029047409764014,0.0003706291987851204,0.0007252364738684583,0.001661698463145158,0.016920198320325822,0.002463887960453925,0.0,0.0,0.0009110675790437152,0.00025554579404149855,7.71517974608306e-05,0.0,2.409038961381198e-05,0.00021798984024915024,0.0012198626498356358,0.007782764527116557,7.006459755956401,0.010338425555538584,0.0004342211946790636,0.0008642223710162811,0.0004202490174363255,0.0,0.0,0.0,0.0008423501040261609,0.011255486540456138,0.004593558298092058,0.0017758062071094203}, + {0.0,0.0,0.0,0.0002316433094666743,4.632866189333486e-05,0.0,0.000492777592090785,0.0,0.0,0.00036620138517410184,0.000860311167981154,0.000627801937289188,0.00039615862782251357,0.0006382015175815743,0.0007412585180221889,0.0005443496152134881,0.0004342211946790636,0.0014569361740251593,0.01087826636766021,0.002463887960453925,0.0,0.001224968607914283,0.0002659453743338851,5.1434523610423855e-05,0.0,7.71517974608306e-05,0.00032085893565077716,0.0007977989033497019,0.0005051873949444961,0.010455538575607172,6.411689717742036,0.008584911390458305,0.0005906782855384595,0.0006261749928266192,0.0,0.0,0.0,0.0004837100898920942,0.0023407680017351355,0.01548997597934342,0.0014412942840489112}, + {0.0,0.000359034976071785,0.000359034976071785,9.265731174147495e-05,0.0,0.0,0.0009269987867698488,0.0,0.0014783332580801472,0.0001389860097703942,0.0005816611322540616,0.0007822933649786682,0.0004477810805623147,0.0004322755421912809,0.0004890038325577813,9.265731174147495e-05,0.0004342211946790636,0.0,0.0014783332580801472,0.01810575866439035,0.001661698463145158,0.0013280260901626902,0.0006637309466189673,0.0,7.227116884143594e-05,2.5717261805211927e-05,0.00036022961849273397,0.0009161735371223627,0.0001389860097703942,0.0008684423893581274,0.00612102343000438,7.183467428908561,0.0072902529772434724,0.0005745525400868179,2.409038961381198e-05,0.0,0.0,0.00047168356513713894,0.0019154702408954955,0.0049134312984123055,0.012843755087019433}, + {0.0,0.0,0.00027354408547782173,0.0001389860097703942,0.0,0.0,0.0,0.0,0.0,0.001574726134041893,0.0005353325426318954,0.00047860413181344675,0.0003551237808660346,0.0004528869181890141,0.0006279898423281755,0.00036620138517410184,0.000492777592090785,0.0,0.0005299377407817784,0.0008684423893581274,0.008473058904453323,0.0033891480311827745,0.00026083953670718565,2.5717261805211927e-05,0.0,2.5717261805211927e-05,0.0002230957983277977,0.0008543392886772146,4.632866189333486e-05,0.0,0.0,0.009529554666964193,8.144883639183066,0.00028818369479418715,0.0,0.0,0.0,0.000493921765145493,0.0015647743940924272,0.0006905019943370563,0.004404629020054309}, + {0.0007198356797796145,0.0007672265736859461,0.00018224563996166503,0.000202715869071988,0.0006402737698321942,0.0002752931574301879,0.00024080457102986958,0.0002348314615525433,0.0002851038703401051,0.0005094417500443462,0.0010726351513074045,0.0006477923118016628,0.0004060568338331563,0.00031398875095469845,0.0003879533792406458,0.0005773846588508389,0.00022107088042551257,0.00020085366576056142,0.0002288738378550274,0.0004454803867677854,0.00013572193656399565,0.0004536820139424312,9.85929212673696e-05,3.7784568969518014e-05,0.0,0.0,0.00038624233179397545,0.000960176532477116,0.00047321071518268315,0.000984533293650101,0.00029055085889509246,0.00038030615468162906,0.000930311591561062,13.161826117439416,0.0,0.0,0.0,0.000271150378464761,0.0017139258730155052,0.0014291134772066864,0.0016500478971344572}, + {0.004498874676119472,0.004260186435735303,0.003949833991546846,0.004156504595223589,0.004126409285535099,0.0043164900943642,0.005309930460533323,0.004609018252833991,0.004628612693791656,0.004379584684196067,0.003458321913028503,0.0032353178560717054,0.0019766122926866297,0.0019010435959010647,0.0049623977834535185,0.004129675606767408,0.0053166693645649195,0.005847603569888476,0.005930394500049157,0.006013905806428836,0.0053729922178336696,0.00591674439431059,0.0032180452507777637,0.0010418245988501064,0.00045341484826037266,0.0014960980901551986,0.0024796273017276133,0.003622767895518305,0.006334150078197323,0.008293716445512855,0.008506267958976854,0.007680651754948292,0.0073767946029489094,0.003455116754507865,15.361907425293513,0.0,0.0,0.0033108875841651054,0.011749617194079746,0.016927963765235622,0.010969556989523633}, + {0.007655691434718322,0.00791677507117646,0.007260493764429019,0.005674865764657538,0.007182065112483402,0.008159089212892595,0.008960607808784061,0.008521665130973037,0.00863454716093127,0.008198862292214757,0.0074393256215306396,0.004404651521593459,0.004199585555944541,0.006667360921803328,0.009128396975725178,0.008081128597688498,0.009563141453319138,0.010594115167564483,0.01006312257020702,0.010112795696786582,0.009884981435375985,0.007944234435002228,0.005943173073703963,0.0013063165768650094,0.0002267074756955781,0.0005667686530662077,0.006959886101794521,0.008067415181962993,0.012671022508922013,0.014964343788600747,0.01613555400338769,0.013325238529374148,0.012375771389915014,0.006903930625004807,7.556914725159184e-05,15.392654252162206,0.0,0.005370906921087839,0.023586379607747676,0.030106323132607287,0.019366206376740868}, + {0.003754119571313706,0.004221779092750646,0.0036799418625149466,0.0028908255360597865,0.003213663370017511,0.00436028999209098,0.005259658051745762,0.005401538303049642,0.0042620278050892,0.0054571258954027296,0.007386144001089419,0.0034011885903354145,0.002905083343788227,0.0033086406645496274,0.003345596480238306,0.005117111298512765,0.005056827099494257,0.005214314370849742,0.005733888897387454,0.006047883551425059,0.005805001420767018,0.006550461409085283,0.001662520972780322,0.0009284708871698295,0.0012316060613445361,0.00045341484826037266,0.005090849383135559,0.004965627570220959,0.008224601888655222,0.008891297865269676,0.009393805324625675,0.008130716033361837,0.006969049348870832,0.004244264274176866,3.7784568969518014e-05,0.0,15.392654252162206,0.002817699245598702,0.01326263506526518,0.014756852348547024,0.013325667984427785}, + {0.00021449817626930555,0.0008613147377126986,0.0001308320392595556,0.00030338952316320215,0.0002529249009145646,0.00026759467533251155,0.00020085366576056142,0.00019488054627800987,0.00019975493810004208,0.00027049484611069515,0.0005013070809156973,0.0005771434151681738,0.001139080006211543,0.0005933751637941551,0.0007775113295510708,0.0003916387293122322,0.00047439426637335724,0.00036013146453294767,0.00027044970484320255,0.0009121050061850621,0.00022107088042551257,0.0009865159806537883,0.00026415118464976034,0.00010351318727812662,0.0,3.078530850432441e-05,0.0007643240940096248,0.0005884549018624516,0.000565309131595243,0.0003995524107215791,0.0004968786142873502,0.0003956180482947265,0.0003372331981408886,0.0002970154250373818,0.0,0.0,0.0,13.300082937932338,0.002909687286675049,0.001018724072981174,0.001359575006650948}, + {0.0,0.00045881377094355956,0.0,0.001050851580145753,0.0,0.00045881377094355956,0.0,0.0013707003145742495,0.0,0.0003495642534622958,0.0008090382153467308,0.0011311564427181659,0.0008549521940827926,0.001137681234929115,0.0016585723490593045,5.9203780920219354e-05,0.001013708633650433,0.0,0.0,0.0,0.0011097897254137468,0.0025727282317063913,0.0009689615820384524,0.0,3.078530850432441e-05,0.0,0.0009162826856851077,0.0016903304733123655,0.006225954503449032,0.011610057647079501,0.001594839064128227,0.0005548948627068733,0.0011135549425808186,0.00103913607706789,0.0,0.0,0.0,0.0006885993157099425,7.395032851014706,0.013240629218788698,0.0033817661392000365}, + {0.0006297245681670176,0.0005548948627068733,0.0,0.00023681506211026038,5.9203780920219354e-05,0.00045881377094355956,0.0018618308091936813,0.0,0.0031687672074548917,0.00045881377094355956,0.0017891636277346486,0.0018744666390692814,0.0012297493178075728,0.001085242463982104,0.0016115508688497994,5.9203780920219354e-05,0.001013708633650433,0.000677211830094193,0.0006297245681670176,0.0006297245681670176,0.001013708633650433,0.0020192130025949136,0.000640318562456068,6.364961046256286e-05,3.078530850432441e-05,0.0,0.0007889834339746734,0.002308707268911604,0.0011692591112008833,0.006882207072110985,0.019078363742225435,0.007074368867742724,0.0006455831580633927,0.0010000347331772924,0.0,0.0,0.0,0.0009840902522701902,0.013474632558621009,3.8084043371072163,0.014006331778860895}, + {0.0006297245681670176,0.0,0.0,0.000414426435656227,5.9203780920219354e-05,0.0,0.0005548948627068733,0.0012594490332032515,0.0012594490332032515,5.9203780920219354e-05,0.0011379213603354488,0.001460039587706884,0.0009600700153096911,0.0008220879536951712,0.0015401643562245467,0.00023681506211026038,0.00045881377094355956,0.0012594490332032515,0.000677211830094193,0.0,0.00045881377094355956,0.0013155327338814152,0.0003265640876990874,6.364961046256286e-05,0.0,0.00015600547440491907,0.0004535754967750063,0.001770215270350237,0.00035522259316539065,0.0005548948627068733,0.0005548948627068733,0.00897959270063334,0.007755276274018357,0.000931651481323179,0.0,0.0,0.0,0.0008505540509833223,0.0033950561568813534,0.017171106131802776,7.871594044457923} + }; +} + + +static std::vector> TransmittanceBackSolar(){ +return { + {8.218987917288283,0.006095731055623178,0.002876647897735084,0.004257084969637862,0.005600558761555169,0.0036700273537564926,0.0024074572263188027,0.004702561792149832,0.0027951693131270097,0.0,0.0,0.0,0.0,0.0,0.0,5.002892523054174e-05,0.0005733080023373684,0.000283429509924452,0.00033897212730276506,0.0002556582662715091,0.00027791586980565166,0.0003112008836498221,0.0,0.0,0.0,0.0,5.002892523054174e-05,0.00022788702261856622,8.331390005298411e-05,2.6014485450472486e-05,9.578720320365882e-05,2.6014485450472486e-05,0.00018161492727538357,0.000290943273757112,0.0005280604959583603,0.00043774002348830147,0.0006281183204049585,0.00031911553070327394,0.0007982267279414105,0.002412967439029145,0.0027931844078871383}, + {0.008591820043088465,8.085499669145982,0.011118825305165761,0.0,0.0,0.0,0.0,5.392311761326501e-05,0.006773752408206631,0.005014681028554091,0.00404320898011212,0.0,0.0,0.0,0.0005054011834997583,0.0,0.00032353862156132336,0.0004373277842915291,0.00029954851248681764,0.00022163536991731355,0.0017453530923231644,0.0002456254789918193,0.0,0.0,0.0,0.00041789001561428534,5.392311761326501e-05,0.00013777920170615594,0.0002575111096837929,2.9932980499337027e-05,6.245380802168329e-05,8.790539725522399e-05,0.00017959796711428886,0.0002660418235051288,0.0007616555753917083,0.0004718131893063949,0.0004912508177865273,0.00034843650693074677,0.0006194590101600396,0.003550471182695383,0.0024836254719346833}, + {0.0038785842957975362,0.008222728716358286,7.691345304849404,0.014728183200077622,0.0011471128581610225,0.0,0.0004718131893063949,5.392311761326501e-05,0.0005054011834997583,0.00016176938087921725,0.005763878877912073,0.0034845907866564744,0.001190364602076078,0.0,0.0,5.392311761326501e-05,0.0004022410738667944,0.0005031365886756124,0.00014372208715069832,0.0004373277842915291,0.00010784622120681893,0.0005211838824041311,0.00010784622120681893,0.0,0.0,0.0,0.0005796593964935028,0.00041333767521702336,0.00017365501157119088,9.238679791422678e-05,0.0010873390066643966,0.0,0.00017176150938753715,0.0010375868000748936,0.0005211838824041311,0.0004718131893063949,0.0006649059695548295,0.0004096422567155537,0.0012045036013085197,0.004066686851001491,0.0012045036013085197}, + {0.008603347140698152,0.0005054011834997583,0.01507418967048021,7.854722606396791,0.008246049194960789,0.0,0.0,0.0,0.0,5.392311761326501e-05,0.0,0.00427440523222375,0.004332481885531802,0.003084040630147672,0.0,0.0,0.00026961558806632503,0.00014372208715069832,0.0002575111096837929,0.00032948157710442134,0.00021569241437421554,0.0002456254789918193,0.0004718131893063949,0.00041789001561428534,0.0005735564760465436,0.0,0.00010784622120681893,0.0004971937733296255,8.790539725522399e-05,0.00011594481949206282,0.00010324316583645861,0.0,0.00029149348746372974,0.00031763926731980365,0.0008566082748545395,0.00016176938087921725,0.0004912508177865273,0.0004635653932554287,0.0008259453812283451,0.004864254105689131,0.003138280460044958}, + {0.002089759913687144,0.00041789001561428534,0.0,0.013581063798917417,7.7455244784665345,0.01219778358368231,0.0,0.00016176938087921725,0.0,0.00037230814033348974,0.0,0.0,0.0006168081260295345,0.005162008564813115,0.005258478105890836,0.0005054011834997583,0.00026961558806632503,0.0004971937733296255,0.0005211838824041311,0.0002456254789918193,0.00021569241437421554,0.00029954851248681764,0.0004262311829413002,0.0,0.0,0.0,0.00016176938087921725,0.00038934742594540645,0.00031358995415747056,9.238679791422678e-05,0.00013765756010322832,5.7972402736175856e-05,0.00028744417430139665,0.00040787040847217336,0.0007069433723578542,0.00010784622120681893,0.0008552177999058145,0.00035886072293573636,0.0008947740776523824,0.003781640425833545,0.0030630769561122997}, + {0.005054011834997585,0.0,0.0,0.0,0.013140429795221821,8.4302780128546,0.0045967903540133845,0.00041789001561428534,5.392311761326501e-05,0.0,0.0,0.0005054011834997583,0.0,0.0,0.0053843905334164735,0.007629867469624023,0.0011593187929870056,0.00016771219622520406,0.0004492134149835027,0.0003534716861789271,0.00040739471967392543,0.00029954851248681764,0.00016176938087921725,0.00041789001561428534,0.0,0.0,0.00010784622120681893,0.00032948157710442134,0.00023567681158796652,9.238679791422678e-05,0.00013128258807329745,0.0,0.0002515682943378061,0.00017365501157119088,0.000461317893366035,0.0004801543566334096,0.000527126697750118,0.0003517915639984957,0.0014651148602705351,0.004293666913329347,0.0021197705073072322}, + {0.0013411812609933757,0.0005054011834997583,0.0,0.0,0.0,0.005014681028554091,8.538241004235324,0.0042154523469707965,0.0,0.00010784622120681893,0.0,0.0005735564760465436,0.0,0.0,0.0,0.0,0.003213783242750861,0.0006718566619331195,0.00014372208715069832,0.00038340461059941966,0.00010784622120681893,0.0002456254789918193,0.00010784622120681893,0.0003183849757541924,0.0,0.0,5.392311761326501e-05,0.00041333767521702336,2.9932980499337027e-05,0.0,3.441438578484447e-05,2.8039422236838826e-05,5.9865960998674054e-05,0.00023567681158796652,0.0009091408796658594,0.0004718131893063949,0.00029954851248681764,0.000324446397856241,0.0022771389606692665,0.004441302883232974,0.0015683584453664548}, + {0.0058504604989942175,0.0,0.0,0.0,0.0,0.0,0.0022286952508706803,8.573650588607117,0.005074290036287388,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.392311761326501e-05,0.00017365501157119088,0.00019170230529970983,0.00013777920170615594,5.392311761326501e-05,0.00033542439245040813,0.0,0.0,0.0,0.0,5.392311761326501e-05,0.00041333767521702336,0.00017176150938753715,3.441438578484447e-05,6.882878005161416e-05,2.9932980499337027e-05,0.0003054913278328044,0.0001541463031556879,0.00019170230529970983,0.0004262311829413002,0.00016771219622520406,9.238679791422678e-05,0.0012938252838006375,0.003915108447203243,0.001672383299894015}, + {0.0034306317225039017,0.007422515942182599,0.0006168081260295345,0.0,0.0,0.0005054011834997583,0.0,0.0048554101003932875,8.524022213219025,5.392311761326501e-05,0.0005054011834997583,0.0,0.0,0.0,0.0,5.392311761326501e-05,0.0002456254789918193,0.00013777920170615594,0.00026345406522689093,0.0006777994772791064,0.004300774815738263,0.00022163536991731355,5.392311761326501e-05,0.0,0.0,0.0,0.0,0.00029954851248681764,0.00022757818526330037,2.9932980499337027e-05,9.686820228845298e-05,0.0,0.00011973193601705921,8.97989555177222e-05,0.0005451739914786369,0.00016176938087921725,0.0005152409268610332,0.0003289277985152438,0.0006882878005161416,0.0037078396360574173,0.001032431658364586}, + {0.0,0.004830583444503251,0.0,0.0,0.0,0.0,0.0,4.718772812234254e-05,0.0,6.766000755688336,0.004754003172533549,0.0,0.0,0.0,0.0,4.718772812234254e-05,0.0005617427869852872,0.00028312629512277173,0.0002725338767931975,0.00022014558510047286,0.002474580623973673,0.0015443561405568441,0.00046736735527769653,0.0,0.0,0.0,9.437544397613785e-05,0.00036170879400459496,0.0001729578079039413,0.0,6.0231564935872896e-05,9.980542938020042e-05,0.00030227148580067,0.00021611745298002867,0.0006658286591347997,0.00023593864061171267,0.0004298900185230869,0.00020661718072715156,0.000511968267572316,0.0034683812038768433,0.0019453429707769563}, + {0.0,0.00257705734549058,0.00377675204088557,0.0,0.0,0.0,0.0,0.0,0.0,0.005119695441146577,6.01691270477239,0.00899960665989297,0.0,0.0005397643059787271,0.0,4.718772812234254e-05,0.00028312629512277173,0.0004402911702009459,0.0005922554080974542,0.000566061323593828,0.0003565081568229293,0.0006802135307920373,0.0031142909752869714,0.0008845458013291871,0.0004422729006645934,0.0,0.00041288029118050534,0.0006552362408052255,0.00010477654657980755,5.073122808909444e-05,0.0001751160005633311,5.073122808909444e-05,0.00018170196958945336,0.00043234139695023634,0.00045962775021603214,0.00046736735527769653,0.0004822783102158116,0.001039562902811728,0.0007830102890192275,0.005009352452245856,0.0030173289657614752}, + {0.0,0.0,0.004128868339967567,0.0021590569785439637,0.0,0.00027861637715159856,0.00027861637715159856,0.00037299180885918913,0.0,9.437544397613785e-05,0.0047209394376795995,5.623702084664963,0.01762298294570204,0.0005397643059787271,0.0,0.00027861637715159856,0.00046736735527769653,0.0002411391551079058,0.0006604367553014186,0.00014156320890412212,0.00023593864061171267,0.0006448350891273669,9.437544397613785e-05,0.009484583559763133,0.0005019151015822435,0.0,0.0006960065863032771,0.00030932050231187035,0.0003284656929897686,6.0231564935872896e-05,9.034734369257378e-05,2.6194133577815076e-05,0.00020435252958923302,0.0002799990424273092,0.0008859742442352726,9.437544397613785e-05,0.0003565081568229293,0.00036073957877139946,0.0019152272880829802,0.004130928149306233,0.0014098634181216195}, + {0.0,0.0,0.0010416794075609704,0.0076994044245611605,0.0005397643059787271,0.0,0.0,0.0007459837324292951,0.0,0.0,0.0008845458013291871,0.014962008657237326,5.689090987828072,0.006941237728421599,0.0,0.0,0.00023593864061171267,0.0003353231974783084,0.000323265055808103,0.0003355145868154964,0.0001677572934077482,0.0004822783102158116,9.437544397613785e-05,0.0009441880022468369,0.007140358704090083,0.0008676076155662171,0.00014156320890412212,0.0006186410046237407,0.00022534609959666595,0.0008310592777468991,0.0018126974866963716,5.238826715563015e-05,0.0001765013324077877,0.0002350759163686961,0.0005294660874123431,0.00028312629512277173,0.0004298900185230869,0.001146752799616184,0.0028968656522295757,0.004521748856408262,0.002366280102820071}, + {0.0004422729006645934,0.0,0.0,0.0021590569785439637,0.004668632486455181,0.0,0.0003258041463735745,4.718772812234254e-05,4.718772812234254e-05,0.0,0.0,0.0,0.013882474647119081,5.835876794613446,0.006609315458122386,0.0,0.0004508835885305199,0.0002987279612968236,0.00015550776240035475,0.0004298900185230869,0.00022014558510047286,0.0006396345746311736,9.437544397613785e-05,0.0004422729006645934,0.0005019151015822435,0.011186193933362088,0.001515569221276211,0.0007863982980314889,0.00035465977749339465,7.85824130019925e-05,9.034734369257378e-05,0.0001521936597301888,0.0002498831941079453,0.0001991520150930399,0.0006028479491125008,0.00023593864061171267,0.0003862458885158745,0.0010432551221083127,0.0011087052532967826,0.006352596106798125,0.0031069915147863675}, + {0.0,0.0,0.0,0.0,0.0049842861784858,0.0030959101580430143,0.0,9.437544397613785e-05,0.00027861637715159856,0.00014156320890412212,0.0,0.0,0.0005397643059787271,0.009943794878679666,5.8416749100464616,0.004022617813314827,9.437544397613785e-05,0.0002725338767931975,0.0005398671164047294,0.0005556601719159692,0.00014156320890412212,0.0006396345746311736,0.00041288029118050534,0.0004422729006645934,0.0004422729006645934,0.0,0.0070198541743736785,0.00077668774287865,0.00015196423789650833,9.980542938020042e-05,0.0001751160005633311,0.0,0.0002567408212819577,0.00029744908793089567,0.0008597801597316464,0.00046736735527769653,0.0005669433094560359,0.0002946998616880296,0.0030037774535793967,0.006603407250880572,0.0020959221326282184}, + {0.00036569251398397374,0.0,0.0,0.0,0.0005019151015822435,0.0050326194269996755,0.00027861637715159856,0.00014156320890412212,0.0,0.0003258041463735745,0.0,0.0,0.0,0.0,0.006216773473840389,6.7907218784084495,0.0036317242371763712,0.00028832693230443736,0.0002411391551079058,0.00017815844508560697,0.00030932050231187035,0.00036170879400459496,0.0,0.0,0.0,0.0,0.0003258041463735745,0.0024483861284737138,0.00010477654657980755,5.465287326798026e-05,8.476865944715224e-05,9.980542938020042e-05,7.85824130019925e-05,0.00025734835974205696,0.0004140969630118471,9.437544397613785e-05,0.0006868222291422326,0.000261648117498741,0.0026258236737225797,0.005101068430964842,0.0019698800652882356}, + {0.0,0.0,0.0,0.0,0.0,0.001278122451090278,0.0016716987536514816,0.00027861637715159856,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0036692010482237305,7.316118734067044,0.0003355145868154964,0.00022014558510047286,0.00025154030678576456,0.00014156320890412212,0.0003827023640120279,0.00041288029118050534,0.0,0.0,0.0,4.718772812234254e-05,0.0002621327251153388,0.0002288896241005124,2.6194133577815076e-05,0.0,5.238826715563015e-05,5.238826715563015e-05,0.00015422888903442685,0.0003827023640120279,0.00014156320890412212,0.0003827023640120279,0.00021053882185741678,0.0005420840754054737,0.0020356906016148787,0.0033364194827404576}, + {0.0,0.0,0.0,0.0,0.0004422729006645934,0.0,0.000557232869014114,0.0003258041463735745,0.00027861637715159856,4.718772812234254e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0004201795860557207,7.435505194266399,0.00015196423789650833,0.00014676372340031524,9.437544397613785e-05,0.0004612847402083787,0.0,0.0,0.0,0.0,4.718772812234254e-05,0.0003565081568229293,0.0002026955395968863,3.011577875670091e-05,0.0,0.0,0.00017815844508560697,7.338186170015762e-05,0.0001677572934077482,4.718772812234254e-05,0.0003565081568229293,0.00010477654657980755,0.0003558107224230964,0.002134770162396699,0.000632431415478826}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.00018875086341518113,0.0006606280624393398,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00014156320890412212,0.00019395150059684679,8.06055455186365,9.437544397613785e-05,0.00021494507060427974,4.718772812234254e-05,0.0,0.0,0.0,0.0,0.0,0.00028312629512277173,9.95759952779727e-05,5.073122808909444e-05,3.011577875670091e-05,2.6194133577815076e-05,5.238826715563015e-05,5.073122808909444e-05,9.437544397613785e-05,9.437544397613785e-05,0.00018875086341518113,0.00013489230901934062,0.00047627387032960665,0.0008733577033172909,0.00024092629581302049}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0006561181364936112,0.00027861637715159856,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.338186170015762e-05,0.0001677572934077482,7.338186170015762e-05,7.521117570725705,0.0006561182186928778,9.437544397613785e-05,0.0,0.0,0.0,0.0,9.437544397613785e-05,0.00023593864061171267,0.0,2.6194133577815076e-05,3.011577875670091e-05,5.238826715563015e-05,2.6194133577815076e-05,0.0001677572934077482,0.00028312629512277173,0.0,0.00014156320890412212,0.00010869819096123783,0.0003613893615202641,0.002836634121216236,0.00048185250145221873}, + {0.0,0.0008358492461657127,0.0,0.0005397643059787271,0.0005019151015822435,0.00036569251398397374,0.0,4.718772812234254e-05,0.0027861637715159856,0.002554735950613669,0.0,0.0,0.0005397643059787271,0.0,0.0,4.718772812234254e-05,0.00014156320890412212,0.0002411391551079058,0.0002935274468006305,0.0003565081568229293,6.852605657620622,0.00022014558510047286,4.718772812234254e-05,0.0,0.0,0.0,9.437544397613785e-05,0.00028832693230443736,0.00012411304071506304,5.465287326798026e-05,6.0231564935872896e-05,2.6194133577815076e-05,0.00010311950751327185,0.00020827417071949824,0.0005766537419234022,0.00036569251398397374,0.0003827023640120279,0.00023673290636104283,0.0037759742149895627,0.002926296749986687,0.0031858411428818617}, + {0.0,0.0,0.0,0.0,0.0,0.0004342211946790636,0.0,0.0001853145993925602,0.0,0.0032825299110556786,0.0,0.0,0.0,0.0,0.0,9.265731174147495e-05,0.0003243006091629544,0.0003396182424950006,0.00028818369479418715,0.00030879507079192045,4.632866189333486e-05,5.930909380582826,0.003106070294467234,0.0,0.0,0.000359034976071785,0.0001389860097703942,0.00035001782278738715,0.0001973784642514169,2.9567512300153725e-05,0.0001774051222226054,2.409038961381198e-05,0.00017491501910017374,0.00015142110753319974,0.0005147210461822141,0.001024899480217523,0.00026246636071780636,0.0004540379967539049,0.0007983229331633348,0.003169370202216486,0.0014066077365634641}, + {0.0,0.0,0.0,0.0,0.000492777592090785,0.0,0.0,0.0007252364738684583,4.632866189333486e-05,0.0005934168732003809,0.004308420435573109,0.0008684423893581274,0.0,0.0,0.0,0.0,0.0005096152085555147,0.00027267815642315323,0.00046309871389436095,0.0004271697045645815,0.0005610497562563283,0.0031575044808122028,5.099446446334837,0.005686270191241319,0.000359034976071785,0.0004342211946790636,9.265731174147495e-05,0.0004941096701844807,0.00022124360872233974,9.798844269184267e-05,0.0001960183527735873,2.5717261805211927e-05,0.0001783940327162524,0.00022857286885844593,0.0026824624744590025,0.0001389860097703942,0.0010178479901030407,0.00043690559462310734,0.003482651584108005,0.005154023543202589,0.004440269866166125}, + {0.0,0.0004342211946790636,0.0,0.0,0.0,0.0,0.0,0.0001389860097703942,0.0,4.632866189333486e-05,0.0004342211946790636,0.010234146690536758,0.002021007828754644,0.0009855551034787648,0.0,4.632866189333486e-05,0.000875816706352188,0.0007204592369854679,0.0005763673895883743,0.0007822933649786682,0.0007514701932755877,0.0009161735371223627,0.0058612797229625445,4.349870359942633,0.006747543397210269,0.0,0.0007324028829707751,0.0007102474412801212,0.00027267815642315323,7.937517178945815e-05,0.0001960183527735873,2.409038961381198e-05,0.00035697585001954443,0.00038162083232203274,0.0067973519580415,0.004632720442476323,0.0008492334510505152,0.0005484429259353424,0.003228505200799173,0.007849641779429694,0.005882594411862456}, + {0.0,0.0,0.000492777592090785,0.0005299377407817784,0.0,0.0,0.0,0.0004516922757680652,4.632866189333486e-05,0.0005443496152134881,0.000359034976071785,0.0009855551034787648,0.013354892928650492,0.0009855551034787648,0.0,0.0,0.0007206471420244556,0.0005608618512173405,0.0006382015175815743,0.00021613777109564036,0.0005610497562563283,0.0009006679987513288,0.0004980209858421793,0.004501251073915049,4.037522799846312,0.0030814752111910123,0.0001389860097703942,0.0007565761513542351,0.00024696094279872056,0.00010346556140327012,0.0001774051222226054,0.00012533254055287012,0.0005833254168205317,0.00042409926395635297,0.0009110675790437152,0.006543325629189308,0.0007720816897252692,0.0006474617428971755,0.005379274708689134,0.004592210362499399,0.0038191834863376324}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0001853145993925602,0.000359034976071785,0.0004980209858421793,0.0,0.0,0.0009855551034787648,0.012977986737947596,0.0004342211946790636,0.0004516922757680652,0.0006486012183259088,0.0005763673895883743,0.0004065582081149,0.0004528869181890141,0.0004632866189333486,0.0007000357660267224,0.0001853145993925602,0.0004342211946790636,0.006521985079256147,3.99893601828239,0.003144166836602516,0.000633095679954875,0.0002643185503232643,0.00013688331203271886,0.00031428843425532427,4.980765141902391e-05,0.00027615717003923185,0.00021343859531112707,0.0007308588172778544,0.0023858531658973847,0.004335541396200338,0.00044942416558592477,0.0028723513570314335,0.005691182619175003,0.005007529883960998}, + {0.0,0.0,0.0004342211946790636,0.0,0.0,0.0,0.00027354408547782173,4.632866189333486e-05,0.0,0.0,0.0,0.0,0.0,0.0008684423893581274,0.0038535890615864167,0.0003198727877225593,0.00027797189908884034,0.0004992156282631283,0.0003551237808660346,0.0005712615519616749,0.0005772333186430429,0.0006845302276556885,9.265731174147495e-05,0.0,0.000492777592090785,0.007122675728209535,4.827506901257242,0.0016603324597602883,0.000322485880113346,2.9567512300153725e-05,8.870254418780401e-05,0.0,0.0003018743836636646,0.00019937664161793456,0.001029442212816376,0.0004516922757680652,0.0029738790995393633,0.0005956559622924132,0.002281673071492974,0.004262695990764276,0.002961725497979195}, + {0.0,0.0,0.0,0.000492777592090785,0.0,0.0,0.0,4.632866189333486e-05,0.0,0.000359034976071785,0.0,0.0005299377407817784,0.0005299377407817784,0.0,0.00027354408547782173,0.0023736670423112377,0.00027797189908884034,0.00019552639509790707,0.00021961678471171906,0.00019042055747120766,0.0001389860097703942,0.0004477810805623147,9.265731174147495e-05,0.0,0.0,0.0,0.0020118943560699727,5.967837538821838,2.5717261805211927e-05,7.77482995980582e-05,0.00011827006377530058,4.980765141902391e-05,0.00014919768502379295,0.00014246502338647287,0.00035001782278738715,0.00036620138517410184,0.0001853145993925602,0.0011016393675492822,0.0006209178187701059,0.00296105337610897,0.0011531330969057404}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.000359034976071785,4.632866189333486e-05,0.0,0.0,0.0,0.0,0.0,0.0001853145993925602,4.632866189333486e-05,0.00014409184739709358,5.1434523610423855e-05,9.265731174147495e-05,2.5717261805211927e-05,0.0001853145993925602,0.0,0.0,0.0,0.0,0.0,0.0001853145993925602,6.456301505748375,2.5717261805211927e-05,5.365790191396569e-05,4.980765141902391e-05,0.00014919768502379295,0.00012022670292617076,9.613631331235877e-05,0.0001389860097703942,0.0003036892331652211,2.9567512300153725e-05,0.0002661076550277003,0.002067010836761179,0.00038437773650943724}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.204592369854679e-05,4.632866189333486e-05,0.0,7.204592369854679e-05,0.0,0.0,0.0,0.0,0.0,7.204592369854679e-05,0.0,6.913965909553653,5.365790191396569e-05,0.0,2.5717261805211927e-05,2.5717261805211927e-05,4.632866189333486e-05,4.632866189333486e-05,9.776318550375872e-05,2.5717261805211927e-05,0.001022902217683551,0.0002365401629634739,5.9135031887650305e-05}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.5717261805211927e-05,4.632866189333486e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.632866189333486e-05,0.0,0.0,7.4439303906679015,0.0,0.0,5.1434523610423855e-05,4.632866189333486e-05,0.0,0.0,5.528478217564618e-05,8.870254418780401e-05,0.0005787175275471498,2.9567512300153725e-05}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.632866189333486e-05,0.0,2.5717261805211927e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.632866189333486e-05,0.0,2.9567512300153725e-05,0.0,7.118734221271054,0.0,7.041905150714685e-05,0.0,4.632866189333486e-05,4.632866189333486e-05,7.204592369854679e-05,0.00011827006377530058,0.0001774051222226054,0.00011827006377530058}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.000359034976071785,0.0,0.0,0.0,0.0,0.0,0.0,9.265731174147495e-05,0.00011837457354668686,7.204592369854679e-05,0.00014409184739709358,9.265731174147495e-05,0.0001853145993925602,4.632866189333486e-05,0.0,0.0,0.0,0.00040536368614589916,0.00025736052309110704,0.00012185352693679148,0.0,0.0,0.0,6.564707054491048,9.776318550375872e-05,7.204592369854679e-05,9.265731174147495e-05,0.0001853145993925602,2.5717261805211927e-05,0.0008448251825748501,0.001584685101108243,0.0004435127772503057}, + {0.0,0.0,0.0,0.0,0.0,0.00045881377094355956,0.0,0.00011840754644778449,0.0,0.0,0.0,0.0,0.0,0.0,0.0005548948627068733,0.0,9.20680828784578e-05,0.0002762042486353734,0.00011840754644778449,0.00011840754644778449,0.0002960189046010967,0.0005393587589223062,0.0,0.0,0.0005548948627068733,0.0,0.0,0.00026967945642442434,9.85929212673696e-05,6.856987747384241e-05,0.001042683201104292,0.0,3.2864301958238445e-05,5.864770589270574,0.0003880869874795546,0.0005548948627068733,0.00012493238483669627,0.00025223157497651345,0.0008312606310811111,0.001797515681931872,0.0016094517187151421}, + {0.0006297245681670176,0.0,0.0006297245681670176,0.0,0.0011846194308738909,0.0,5.9203780920219354e-05,0.0005863794594938734,0.0,0.00011840754644778449,0.0,0.0006297245681670176,0.0,0.0013069363982612103,0.0,0.0,0.0007169701324682729,0.0007036802687134984,0.000677340820536826,0.0007892235593810071,0.0005656982070989786,0.0009996991733145955,0.003910069639859644,0.00814939912913552,0.0,0.0010885383391105769,0.00017761137354596656,0.0010129890370693699,0.000510700253456003,0.00013429849578245102,0.0013001760260947283,0.00016224257790789523,0.0003155934351604864,0.0004470505506375147,3.3676541537816544,0.006790517548474876,0.0011050571199478277,0.0004224223038340551,0.004194303204910536,0.010232718326799754,0.004827496969492906}, + {0.0,0.0005548948627068733,0.0006297245681670176,0.0,0.0006297245681670176,0.0,0.000518017613434396,0.00011840754644778449,0.0003495642534622958,0.0010360351237380084,0.0,0.0013069363982612103,0.000677211830094193,0.0006297245681670176,0.0021234982351533128,0.00017761137354596656,0.0005920378092021934,0.000841902455734352,0.0012558486405779116,0.0010719526002273296,0.0012299894432139067,0.0015138252058957344,0.00011840754644778449,0.0018352553916273233,0.012580134634719357,0.004588137709435595,0.00023681506211026038,0.0019863481465011226,0.00044497161875421763,0.00023365371877995134,0.00026449201880543693,9.443491896688728e-05,0.0004822817194694911,0.0007046769430763259,0.008911717252443004,1.9570559254592577,0.00539681235028889,0.0012028226398711804,0.002871627409771152,0.013421088079444771,0.005145058201572989}, + {0.0005548948627068733,0.0,0.0005548948627068733,0.0,0.0006297245681670176,0.0,0.00045881377094355956,0.00011840754644778449,0.0003495642534622958,0.00011840754644778449,0.00045881377094355956,0.000677211830094193,0.000677211830094193,0.0,0.0,0.00040876808594790705,0.00044729067604384843,0.0008549521940827926,0.0006575261645711027,0.0008549521940827926,0.0008090382153467308,0.001026038621491268,0.00011840754644778449,0.00045881377094355956,0.0005548948627068733,0.0028839476902345835,0.0019254332565636155,0.0012693786297390197,0.000289253986983814,0.00013429849578245102,0.00011335371622110983,0.0,0.000249864800458701,0.00033148434963079106,0.0009011062982251884,0.007939301712716907,3.4008083917753864,0.0008751554014323744,0.004101731782238032,0.011171873827123114,0.003573390831250629}, + {0.0,0.00045881377094355956,0.0,0.0,0.0,0.00045881377094355956,0.0,0.00017761137354596656,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00017761137354596656,0.0001841361657569156,0.00019066095796786464,9.20680828784578e-05,0.00011840754644778449,0.00012493238483669627,5.9203780920219354e-05,0.0,0.0,0.00045881377094355956,0.0007548326755446564,0.000427476020078125,9.20680828784578e-05,3.2864301958238445e-05,6.856987747384241e-05,3.078530850432441e-05,0.00018205723387361856,5.9203780920219354e-05,0.00017761137354596656,0.00040876808594790705,9.20680828784578e-05,5.449091961190933,0.00037784568969518,0.0021753622443905483,0.0027654889016407933}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.9203780920219354e-05,0.0,0.0,0.0,6.603448674177586,7.556914725159184e-05,0.0}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.911301759220832,0.0}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.7784568969518014e-05,0.0,6.526485402916775} + }; +} + + +static std::vector> ReflectanceFrontSolar(){ +return { + {0.0032759222071488308,0.004258370956704377,0.003627260840400187,0.0031955976251153394,0.003671337612337933,0.003657318406128673,0.004324667916842566,0.004058518919095872,0.00407780996078167,0.004192714642292135,0.0025397647271103705,0.0031673039260474733,0.003632598056782284,0.002678383784318476,0.00432037691201459,0.0037630096283778427,0.005224866752296432,0.004284128243440822,0.005001287773993813,0.004888573512158278,0.004834977168508944,0.004454450282582156,0.001341020710486406,0.0001915744429576697,0.0001915744429576697,0.0002554325906102263,0.0012452336659060724,0.003987475960779177,0.005194134455362439,0.00738158457677805,0.007709711785386222,0.006348948681891451,0.005414741194155262,0.0051520482208006636,3.192906511142567e-05,0.0,0.0,0.002910191059822001,0.0077934554447388485,0.014261583170201675,0.008986040974178667}, + {0.003857934754419338,0.0034409211600160542,0.003283284930171658,0.0034032988937074313,0.0036684513487983406,0.003973933753085019,0.004135505315840356,0.004227892408168515,0.003966713601859032,0.003419591199998146,0.003215209047371604,0.00407847733692396,0.0031385282374094096,0.0036400399415663968,0.0034073491882495423,0.004141766518825841,0.00432467336908931,0.0056339292362347975,0.0046879885748387015,0.0037936626996399343,0.005439573981000149,0.003852280142274813,0.004235598671847965,0.0004129726482045464,0.00017207194294393342,0.0004129726482045464,0.0019813314678972884,0.00583933202383076,0.0062867024075906365,0.006605833091779217,0.0070966940213995425,0.00567617211893383,0.006407780838722641,0.002895816194585109,0.0,0.0,0.0,0.003205545260497678,0.008580810826597637,0.010550105433179118,0.006565970938284337}, + {0.004463321211066796,0.0050195042718292945,0.003967027643388085,0.005121668248040975,0.004418941906649562,0.005017024093804324,0.004986566271399558,0.004914324101977455,0.0040367869219711154,0.005044045776142088,0.004439540977067734,0.0024541826766148905,0.0023254747186922413,0.0022064305476435183,0.0034640691050436766,0.0037502380464217435,0.005918101770749601,0.006131035947158378,0.005647761545874697,0.006342963508308852,0.005427533853091652,0.002890808725295954,0.001479818361769189,0.00024090073330003522,0.00037855831401223893,0.0002753151614244073,0.002895816194585109,0.003869081735601471,0.006159434273999848,0.008133261453185913,0.009040773714884077,0.0075782977357683745,0.005536218859594973,0.005681785520137522,3.441438578484447e-05,0.0,0.0,0.004352763171158053,0.009582054194250041,0.01542199066390596,0.009741240913016012}, + {0.004728122339206935,0.005247371781870946,0.004153061828551606,0.005252699643618289,0.0037366375246657628,0.0049288299255493394,0.005118012278903635,0.00588729906345132,0.0056772291140240365,0.004528578760409703,0.0033844792050244095,0.002236935097745442,0.0018583771994176378,0.00288867735768361,0.004359810879937282,0.004909651332261685,0.0053219440272809304,0.006798936849461457,0.0057436054363141946,0.006243116527694583,0.006394529498901634,0.005877654995301084,0.002601571899602834,0.0002753151614244073,0.0011217533317438918,0.0004129726482045464,0.0024631328601928894,0.004496360062288464,0.0070647192662517625,0.007873499577020037,0.008480192761871855,0.008082839562148518,0.00679289108737673,0.0043961275396184355,3.441438578484447e-05,0.0,0.0,0.004421591632050943,0.009551915558608307,0.015684804168531852,0.008658749667297622}, + {0.0052811733053774535,0.004567490559746998,0.004475608085890979,0.005120193745953662,0.004289244157121953,0.004887988165769626,0.004749654274193069,0.005475313028583224,0.005023774675835965,0.005100065275178601,0.005531818072274902,0.003334253218420327,0.003285135160516945,0.0031965954484420235,0.002520209908098199,0.004892104261825871,0.0053503048724247255,0.00590774961605976,0.006371943653161738,0.006871711767906061,0.006426337328358981,0.004858116276161487,0.001972381284319289,0.0012938252838006375,0.0012249964934445356,0.0013970684931682992,0.0016518906881522212,0.006512916054370781,0.006905159532041919,0.007678601850093226,0.008649283558350465,0.008352798913531466,0.00681951592076172,0.003850469167120657,6.882878005161416e-05,0.0,0.0,0.005907982343264325,0.009782236980746147,0.014160291388308472,0.01012225609518053}, + {0.003808548920033594,0.004439600890303198,0.0033402452429523396,0.003638814990336992,0.002985315226422875,0.003937926557497236,0.003871391812471442,0.00388917478557639,0.004579161506602616,0.00410572464548261,0.0037421851243553215,0.002600789971244771,0.002292871880486357,0.0016518906881522212,0.0020304485864800254,0.0035876921137436755,0.004001082552143493,0.004514793178466962,0.005074440418718699,0.005208422591964097,0.0048415800268973115,0.002890808725295954,0.0018436733263966396,0.0003441438578484446,0.0002753151614244073,0.000845656207613129,0.0009636028680084844,0.004086329405599042,0.00599031730272058,0.006265050456867471,0.006776129120763546,0.005997994496529025,0.005635956486462521,0.004441302883232974,3.441438578484447e-05,0.0,0.0,0.0025516719133413883,0.007986857353239129,0.013590983578706512,0.008933923888566156}, + {0.003467632915609979,0.0033086616377447646,0.003842805621500985,0.0030259822024640737,0.004519095827809205,0.002475186068491862,0.0027264921031036307,0.0038802957310027507,0.0035916933392968723,0.003992160779510075,0.0025849883548432003,0.002178867795584706,0.001671601371535952,0.0013077468197889932,0.002279309211950398,0.0031637122160137706,0.003770276510651421,0.004264040831316248,0.003882152312277174,0.004509831693830275,0.0042502885251578465,0.0029743074119031585,0.0013077468197889932,0.00020648637106830548,0.00013765756010322832,0.00024090073330003522,0.0029843552477336072,0.0026606691878803073,0.004432786280250879,0.005221336239003397,0.006673118354000315,0.0056824403317748745,0.004484612574819997,0.0036547438145873956,0.0,0.0,0.0,0.002429499944742146,0.005918948652429275,0.009968579031755975,0.008281969468339635}, + {0.0034108054185625777,0.0027367457482932985,0.0034015173599466248,0.0031849432950091607,0.003200721449424174,0.0031484359672567966,0.0033180944709075818,0.0031762220042447363,0.00359983598751445,0.0031787087294747997,0.0020648637106830546,0.003475820055380791,0.0029065766943908405,0.001878087511279024,0.0017895478903322247,0.0034022768567668984,0.003638915560734699,0.0038902427160412683,0.003850204285708642,0.0035129629386972862,0.0038751126438022706,0.0019272055691824065,0.0008947740776523824,0.0012249964934445356,0.00020648637106830548,0.00037855831401223893,0.0028621832791343653,0.0031277667071549107,0.004138100364368374,0.004855018950453083,0.005228175054086961,0.004875420434072609,0.003975096078264857,0.0017658947730538723,3.441438578484447e-05,0.0,0.0,0.0025860860982237725,0.006126297284800352,0.008407817405194125,0.005684068020235723}, + {0.0036237013702289907,0.00299290315673063,0.002940383454259452,0.00240666426775012,0.0038194529886910336,0.0036076156163421832,0.0038468857289587896,0.0036025137523380693,0.003656547212087692,0.003523408934323499,0.0036056359420041403,0.002957505727448378,0.0027943835846433443,0.0016970664032891043,0.0030499881538121436,0.0033887005400421656,0.0038925927911470605,0.0044001904519005534,0.003991808884761003,0.0032465841304058596,0.0037630502888905204,0.0024541826766148905,0.0036497724250248035,0.0003441438578484446,0.00017207194294393342,0.00020648637106830548,0.0012389180294328915,0.003456109743519405,0.005156607141641532,0.006058385895270851,0.006287752483953405,0.005180378963813924,0.004930801468454932,0.001583062318387453,3.441438578484447e-05,0.0,0.0,0.003742253820939802,0.006132564095670285,0.00889462944224345,0.007388842369569612}, + {0.003597529826873068,0.0035503290450164464,0.0031848464888159316,0.003225123804339694,0.003220745159824156,0.00434296553127101,0.004457326794514455,0.0040767281612402685,0.0035972806956182223,0.0028681143117359844,0.0035892852833717217,0.0029573136862963358,0.0015057890605205174,0.0028308544086041044,0.003723921547809837,0.003969023811737732,0.004762755554145723,0.004787068459358726,0.004663071479100701,0.004730928813971644,0.004490331640341577,0.003890902610232721,0.0025046757752538165,0.00024092629581302049,0.00015057890605205173,0.0003915052018650722,0.002654570431913771,0.004556871253491707,0.004960456236904062,0.006913303473175234,0.006549502934803468,0.005684513917963494,0.004614174858896848,0.0031679073853656268,3.011577875670091e-05,0.0,0.0,0.0025770905503137275,0.00841476991963553,0.013044155795758988,0.009227305989538742}, + {0.004145331098667851,0.004448850455215535,0.0038279916284987493,0.003713187795815878,0.004814380779004788,0.004524672126102779,0.005815087244412602,0.005734492703780853,0.005232857165584925,0.004514395089183232,0.0034392691680939363,0.003811808187813835,0.002548559141932514,0.0036957563187585626,0.005329549267070796,0.005667875314175395,0.006699594293081572,0.00636974540726856,0.005484399189967304,0.006022031467803946,0.005784184902468593,0.003532962916376088,0.0019145427828916727,0.0009515224581650596,0.00024092629581302049,0.0004216209274989636,0.0039975981600343415,0.007721544244938689,0.007136891532890081,0.008194379043335502,0.009369363823328297,0.008253355501964588,0.008793847498420963,0.004609330334702098,3.011577875670091e-05,0.0,0.0,0.004970720023792573,0.012298445705301673,0.015744361647182216,0.01116387073500873}, + {0.005452421301291036,0.005167161628485981,0.00511159239080073,0.004242100817117936,0.005675912439482565,0.006221537755601814,0.0056615852299974284,0.005923820925029884,0.006079497343149363,0.005529796575122905,0.004583668294153033,0.004203313479852729,0.002857549540577651,0.003039828579690094,0.006726866046776134,0.006977207802374853,0.006778234129018994,0.007868588016332934,0.007573281709925793,0.0065252676465546765,0.007313399202002528,0.003834121319824169,0.002624454828965352,0.0012827959456020105,0.0011924486717788134,0.000602315649358729,0.003907250529196418,0.006972975558433715,0.007936746832349864,0.010390796201982338,0.011235959491828144,0.008707355546868988,0.0084636837955511,0.004011365923764619,0.0,0.0,0.0,0.005311410219953333,0.014157735024511635,0.018108277600946122,0.011148303255141606}, + {0.005948697858300145,0.006259096686170229,0.005864417441210743,0.004966040799869272,0.005465428415091465,0.006216631563554283,0.00671067361324608,0.006613132528290116,0.006819262525005747,0.005621102784363552,0.005943166792335243,0.004979452450612636,0.004330456440743603,0.0027499531542909653,0.004598248560828137,0.006099528200253644,0.007021882895213599,0.007100220845142975,0.007753113670736902,0.007538208307285815,0.006852541364298729,0.0063205832895678205,0.002065121944742935,0.0010110696520661893,0.003535047262809264,0.0011924486717788134,0.0050410531514997045,0.0074298325431318936,0.010972335481853966,0.011113781691757186,0.011911028121448695,0.010156224357280462,0.008412274901985794,0.005030267546490768,3.011577875670091e-05,0.0,0.0,0.005220162899739513,0.01403455555889999,0.01959663641126405,0.012873447978078994}, + {0.005070345534927269,0.005407989450804454,0.0056909390359068295,0.004152074217356053,0.004794979218629162,0.005039415380186633,0.00624537914373814,0.005956095387433236,0.006050858051297857,0.007137337286017521,0.00559558535318099,0.004450235494455138,0.0037274570180124097,0.0047642314603805755,0.002988427948991364,0.006449225963809496,0.006581949641476015,0.007300377691061893,0.007420113399995975,0.007568524789292723,0.007060348471424206,0.0057709188425755144,0.0030768759118379486,0.0003915052018650722,0.0011623329056587163,0.0010713011438201778,0.0033644822326165053,0.006624424499184208,0.007767878867359063,0.00945522124561621,0.010823178164884076,0.009954775713081081,0.009321166510318012,0.006773316815533377,3.011577875670091e-05,0.0,0.0,0.004019881847531261,0.012821993690888843,0.018170322895582916,0.016223055824002762}, + {0.00430196273974238,0.00553187486702801,0.0039008790677445043,0.0034151672818937295,0.004378395789145015,0.00508613646184556,0.005151349845037356,0.00509342757973403,0.005368910447231065,0.004535901852522368,0.006082463877875775,0.005512090527978008,0.00412837874518651,0.0023584478622520706,0.005300068027761051,0.004660723279155973,0.005720928272818516,0.006477653414655538,0.005765369778651788,0.0061509272789811486,0.00676896270811235,0.00632841520501932,0.0034849458712649076,0.0017818972988110885,0.001041869757752206,0.0004517367758183273,0.002185585258274833,0.003626731423050942,0.0073278931839847825,0.007756181212412869,0.00961863624621394,0.008658324297761822,0.008586249858337057,0.0036412438078540807,0.0,0.0,0.0,0.002968595842352622,0.00788030660755502,0.018079434246348114,0.011504858234875136}, + {0.003929090917275352,0.003517990301559748,0.003792698698608452,0.0024258541194460653,0.0036810217935045408,0.0035997344848149072,0.0038494300928353137,0.004199349837350935,0.004160766483086675,0.004408404330615807,0.004998294890349907,0.0023060479951850102,0.0016435007246391193,0.002256818075357862,0.0026871467803251687,0.0037930888384111816,0.004635317571498993,0.004742620739506269,0.004102424713212762,0.005413101754445879,0.005560986902810918,0.004490643261441871,0.006214915114047662,0.00027104205395856194,0.00018069472185976534,0.00021081048000530685,0.0010540523429777896,0.004105134430439473,0.005108164638443062,0.005675676883375257,0.0074463194217960806,0.006609518294014164,0.006341223568354206,0.002727668890172324,0.0,0.0,0.0,0.0035759772650470266,0.005681656573307655,0.01171393595863424,0.00955621755834142}, + {0.0023873516578481343,0.0030484374192993762,0.002329575063140648,0.002129081237034259,0.0021154769700989827,0.002635801683205591,0.00252674697151227,0.0031219861332422104,0.0026820373352552545,0.0035411018706254798,0.0039631054645416115,0.002738670998234679,0.0016133851216907007,0.0016959009168226822,0.0042478519869548785,0.002469901479795929,0.0028310866890092954,0.003489453335526628,0.003552138655736653,0.00396929862719626,0.003317817586274954,0.002593378273650315,0.002082371197067862,0.00024092629581302049,0.00027104205395856194,0.0008604906638148708,0.0025520406305271624,0.0019876412411502253,0.004090984213151322,0.004292638643828095,0.004846920567145364,0.005545315060546565,0.00615643585669893,0.0019446592078327578,6.0231564935872896e-05,0.0,0.0,0.0023842130383436395,0.005039896307239054,0.009345299067886358,0.005415443820116981}, + {0.0020052756461134223,0.0017402799328105076,0.0023370273038602262,0.002356804202036317,0.0017192605559139221,0.001903380858598492,0.002581749242823196,0.0020459180674692393,0.002333102270476644,0.002116659658054426,0.0025820961175940286,0.0017260165197711006,0.0008131261293640357,0.0014326902771454627,0.0011142839169310445,0.002349791175308491,0.0024302266296879755,0.0024102002751405357,0.0023315355769920995,0.0026824997797412348,0.002859417218332018,0.0013853263236103402,0.0026860552047359193,0.000301157787567009,0.00018069472185976534,0.00021081048000530685,0.0012519954326002248,0.003943273032786368,0.0025081499027201117,0.0030252532204338932,0.0038043689456200747,0.0034782018508384823,0.002937565330895435,0.0018248801541212222,0.0,0.0,0.0,0.0015839541036791465,0.0034795799338117914,0.005615481336011018,0.004420332137374242}, + {0.0017715245672229472,0.0021467798433052448,0.0013779533315717602,0.001987721808700053,0.0017381062713533104,0.0018119543378491824,0.0021617037090490643,0.001910778387731583,0.002082666869056723,0.001997621299480629,0.0014559440816138021,0.0017432648703578047,0.0008131261293640357,0.0018336129060577862,0.0021279083639166195,0.0015801548597105773,0.002078198664146219,0.001772017762822624,0.002146092804658929,0.002128378249276511,0.001952247304310371,0.0019179640758592114,0.0006625472233119841,0.00012046312987174578,0.0009515224581650596,0.00021081048000530685,0.0008131261293640357,0.0017338487603391012,0.0030815318255214643,0.0028174735089744377,0.003942361804841776,0.002645749021320464,0.0038546524085399797,0.0011616485335811462,0.0,0.0,0.0,0.000602315649358729,0.004219607662579447,0.004469845540388553,0.005027644856204015}, + {0.0017919921846095309,0.0018632994349687597,0.0016436737111554238,0.0018132323953567178,0.0018073537123738743,0.0013778425097844,0.002288235291424547,0.002506288764101431,0.0018105975162682657,0.0017380522897453854,0.002886675071762539,0.0016736166527040403,0.0011839323045041883,0.0011142839169310445,0.0027396405385843765,0.002660451973468125,0.0026279048241991954,0.0028651342816075893,0.002293649401328461,0.002599084374978913,0.0024350894769580517,0.0009938207690245345,0.0007830102890192275,0.00012046312987174578,0.00012046312987174578,0.00015057890605205173,0.0009335892772705459,0.0020874062088615765,0.0026425591990339977,0.003385544874544988,0.0036055068362986853,0.0032219895156323803,0.001942999678251129,0.0009637050108789929,0.0,0.0,0.0,0.0031709204608260564,0.0037831896727471065,0.005621425367410819,0.004327254349909881}, + {0.0027170063754980043,0.00292275106008425,0.002825234512222798,0.003035012027783087,0.0024401922908781743,0.0023369132063707485,0.002724314344236129,0.0029701125599099214,0.002953304650169695,0.0024069544223987525,0.0021777530177068327,0.0024058121409036956,0.0015832695187422818,0.0012046312987174577,0.003341956278116928,0.002665355791551761,0.0035593635234699435,0.0032494147059131946,0.003244074127547258,0.0028486809328830513,0.0031102264055811787,0.0026758646242688827,0.0017812127138742237,0.00012046312987174578,0.000301157787567009,0.0011322170978255585,0.001854311172132776,0.0029908792047330405,0.0042229325186312824,0.005064267776362382,0.00495599408652163,0.0037004146861515292,0.004295397840105886,0.0026860552047359193,0.0,0.0,0.0,0.0023455806098903556,0.006059742608103889,0.008168362687141694,0.005742843173919205}, + {0.0030041257882189847,0.0033597196087219693,0.0037736716030815558,0.0031082267035353324,0.0038538158304464477,0.004010266047715427,0.0037260187225841373,0.0037583407983289886,0.0034276399749053844,0.004200625975698574,0.002285944297571503,0.0024802838796250852,0.0021177841394026784,0.0020275258028623236,0.0037566015504926376,0.004115671216725468,0.00417976964259665,0.004835779860248287,0.004034944242835816,0.003989105049478654,0.00364565928372363,0.003689164925355265,0.0007096204003582398,0.0002365401629634739,0.0001774051222226054,0.00020697261428683183,0.002471710429159192,0.00511176418174204,0.006183525138829363,0.007433916334903101,0.006173020524438261,0.005692147517572803,0.004310448039350539,0.0009165930146450717,2.9567512300153725e-05,0.0,0.0,0.003523508565695369,0.009370812887518785,0.01199299285382143,0.006267398239308811}, + {0.005110733191360335,0.004539637983538945,0.004085504026331571,0.0046084581257744344,0.004396239939362729,0.005221335386144359,0.0052537059618661015,0.005823605081843167,0.005407065382147629,0.004613225613879008,0.005115224766210065,0.002788591800580833,0.002659245361468691,0.003014055039789746,0.0037938873727236485,0.006292675478102532,0.006672782962387441,0.006265709900488313,0.007042130715055236,0.006577705343404842,0.006309702246283912,0.003353733146902937,0.003941755388692707,0.0003252426957685688,0.0001774051222226054,0.0004730802373947661,0.0024633495402460563,0.006918494414970658,0.009066397166496577,0.010452024582745372,0.010238352463026705,0.008530369134316531,0.007418437452548176,0.0028265209145082993,5.9135031887650305e-05,0.0,0.0,0.0056659166185480375,0.01721396857647145,0.01845160348966286,0.010836304763415289}, + {0.006019276862442393,0.00648157987076781,0.0060930152143050765,0.005858084451977936,0.005518738792241415,0.00688488431040952,0.007968329425657204,0.007702563121211916,0.007100671963827708,0.00844474426502073,0.005426059847330067,0.0040396731863170075,0.0030842672873472544,0.0049682574116148995,0.006745521484787385,0.00744741297568424,0.008579060310606306,0.009749415439141922,0.009114075582806986,0.008734124366856905,0.007744981479243917,0.007829172572866267,0.0032574004186214597,0.0012594422746493104,0.0012594422746493104,0.002223209628656357,0.0037516870327176538,0.009099019974620173,0.013112266569654984,0.014576170467294121,0.013534128619353877,0.01117596969910796,0.01048913181689558,0.007854827235794067,2.9567512300153725e-05,0.0,0.0,0.006173508354827941,0.01854436034289422,0.023498380334247355,0.015456791467650392}, + {0.00813972780797532,0.008504599325348973,0.00686378361644055,0.00715648939656291,0.008671955581193788,0.007947828263191955,0.008634680521344336,0.00923381686438244,0.008673526274596608,0.009664812080659512,0.008808360992293165,0.006138325545316448,0.00478316283577328,0.005100716329065146,0.007504910713095005,0.00794395806380673,0.009642894324991203,0.011847983084286284,0.010598908506298708,0.010980443984563559,0.010682243264864052,0.009116926361220119,0.004457919768410451,0.0014664148570163761,0.0004139451966538975,0.0015551177614157308,0.006363576710802995,0.010057784152195859,0.012584723172696922,0.015044198556711259,0.0173626544611679,0.015934711853980627,0.012629679814630583,0.0063121003662762,0.0008750646441375877,0.0,0.0,0.005922107071415602,0.018258627423661418,0.028007321524267135,0.01749477820300485}, + {0.006132388468796125,0.007438593484046625,0.006301265713547389,0.0056664912526340925,0.005793146397734945,0.006648601029293095,0.007566175302119555,0.007828038722543508,0.007138328778058772,0.00793182012099981,0.007752479215519787,0.004512753030436163,0.004828781282867813,0.0030420669473412583,0.0073391579918766535,0.007297235895870697,0.007816434779357964,0.008326884442874117,0.008910493722778067,0.010282902742245763,0.009526274272587884,0.011411839908336274,0.005459616158051198,0.0013481451790486652,0.0004139451966538975,0.000591350318876503,0.003063060836567877,0.005817082608855227,0.010406780422011671,0.012009309274706868,0.014085494219663375,0.01299109190989751,0.011839960177516833,0.009208375889233112,0.00011827006377530058,0.0,0.0,0.005048386058520309,0.013693929026880472,0.024399714191367623,0.01727345172334224}, + {0.004885163954437121,0.005480833846997328,0.00475301098493497,0.004076170126581933,0.005579220124405851,0.005191256125672553,0.005718833568373738,0.005113460542662281,0.0060329903167300565,0.006065713575755745,0.005331350492110899,0.004348895096654704,0.002382335969013768,0.002687256461992151,0.003785565347631557,0.004806720827776628,0.005952100889298046,0.006861238388484083,0.006408922051173071,0.007273563793714349,0.0070125023423606376,0.004713839126101093,0.0025597412116883213,0.0004139451966538975,0.00029567512300153714,0.0033517492250244732,0.002116228707261678,0.004322714865741892,0.008315160854768557,0.009093408515851062,0.010103072801856577,0.010652857729319358,0.009534981743913795,0.003823454712416161,2.9567512300153725e-05,0.0,0.0,0.0048457159414445035,0.009056287634495142,0.016586907780018735,0.012558404422043834}, + {0.002999720860478099,0.0037456809793892675,0.003868791621149874,0.003065502397555238,0.0028309752275478928,0.0034224060185641214,0.0034977948030192473,0.0038791541022422556,0.0038108707782037237,0.003981696050152928,0.003966329675940094,0.0031104475182600648,0.002066338714890954,0.001999514383141201,0.002824998082687044,0.0038993644154111007,0.0037720033436007996,0.0039523081838630375,0.00427996044677478,0.004845612352769165,0.004663672172543577,0.004917424599688457,0.0026358106279438034,0.0003252426957685688,0.00020697261428683183,0.0012003073399061565,0.0010348630154240035,0.0027564962527921173,0.004012944899040483,0.005357099583343386,0.006152447331708065,0.0068215471408501335,0.00656390676572548,0.003692552353332629,5.9135031887650305e-05,0.0,0.0,0.001731850882220059,0.006997426576540313,0.011302416540632416,0.008598799897562095}, + {0.0016716044313543573,0.0012361986622304241,0.0012778421950386777,0.001393231547730395,0.001497277940472449,0.0013823258283522223,0.001797793824907609,0.0018815015870205396,0.0015819451384873342,0.0021146631511344428,0.0016000044990613284,0.00267617970084772,0.0007096204003582398,0.0008574579739042033,0.0011396495853869418,0.0018193026100766384,0.001508124638396068,0.001925203155790904,0.001892844546970203,0.0022048852737966106,0.0021474514542120875,0.0016058909857634633,0.0016438197804932672,0.00020697261428683183,5.9135031887650305e-05,0.0001774051222226054,0.001985997265528891,0.0017783525612916002,0.0017110367855937255,0.002198918969611088,0.002892070545449819,0.0032124847725083254,0.0022782594632846966,0.0023112404111854863,0.0,0.0,0.0,0.0004139451966538975,0.0022142777975093734,0.00390532469699922,0.003775669015578203}, + {0.000497528618027616,0.0004423441602795165,0.0004939428761561713,0.0003093524338754023,0.0003367070393621195,0.00031259464679095377,0.0004415298972811929,0.0005761926854806353,0.0004415298972811929,0.0004815324710427199,0.0007129792029301455,0.0008667033517104259,0.00020697261428683183,0.0011793132561496414,0.0005651416613039485,0.0007214314365780995,0.0005434071913424192,0.0004055929381228407,0.0005998266826632135,0.0003443387862595933,0.0006110761321520325,0.0004139451966538975,0.0007561226497697553,0.00011827006377530058,0.0,5.9135031887650305e-05,0.00011827006377530058,0.00029567512300153714,0.0005800857731450325,0.0006855837323132666,0.0009527690787497177,0.0008281961967135528,0.0005650098868727609,0.00020697261428683183,2.9567512300153725e-05,0.0,0.0,0.00014783757354596338,0.0004867575560980077,0.0015186870697222435,0.0011965716510181194}, + {0.00016483885228835268,0.0003095825049255908,0.00013878597100441773,0.0008157586820824092,0.00012510874083335782,0.00010018202437540885,9.591960333428383e-05,0.0002133299157342025,6.465680611114124e-05,0.00013878597100441773,5.9135031887650305e-05,8.870254418780401e-05,0.00014783757354596338,8.870254418780401e-05,2.9567512300153725e-05,0.00016151486032943887,0.00010319417509399001,0.0003713391744868057,0.00039031119947131925,0.0002475594685286757,0.00010319417509399001,0.0001774051222226054,5.9135031887650305e-05,0.0,0.0,8.870254418780401e-05,0.0008750646441375877,0.00014783757354596338,0.0004014138577845849,0.0005340013474509791,0.00038453817850426527,0.0003387141301727943,0.00037010101699283776,8.870254418780401e-05,0.0,0.0,0.0,8.870254418780401e-05,0.00018424370087142107,0.0004861581552846498,0.00020697261428683183}, + {0.00038794082558526815,0.0005280194628059734,0.0003594358720747251,0.00022064990107030738,0.00032302972065887775,0.000597819672555344,0.0003802757454179456,0.000514514743914938,0.0004115385667314777,0.00046865435101491634,0.00014783757354596338,0.00020697261428683183,0.00020697261428683183,0.0002661076550277003,0.0006892982373171969,0.000753058986390385,0.0005733531115077125,0.0005297844373716527,0.000539844021563783,0.0005863643706872751,0.0004419082446794544,0.0009335278039121267,0.00011827006377530058,0.0,8.870254418780401e-05,8.870254418780401e-05,0.0002365401629634739,0.0006301631965763284,0.0004708672942048412,0.0007737171374931119,0.0008465627416748892,0.0005724721337889119,0.0005877388081175483,0.0006378525682880183,0.0,0.0,0.0,0.00057102815583546,0.0009531929491549727,0.0014355306583338067,0.000843974438295015}, + {0.001494347663773591,0.0014627913432207964,0.0015410694507124365,0.0009280572775358173,0.001644595491038832,0.0015934214809016918,0.0017918483167509202,0.0015735352617669187,0.0014196855237629843,0.0014621011535583608,0.0021211431467428954,0.0004435127772503057,0.0012510813857361746,0.0007391879002518429,0.0015408695004786417,0.002231987040405915,0.0023020463139893747,0.002278479005027845,0.0020419535372020355,0.0020160370960554965,0.0020672979098890127,0.0019388234645871247,0.0014531106201544862,0.00014783757354596338,0.00011827006377530058,0.0001774051222226054,0.0025942823315142673,0.0025471082113748384,0.0030930193258939505,0.003638132163195028,0.002746076761792715,0.0025315422061258737,0.002230603854550654,0.0003252426957685688,0.0,0.0,0.0,0.0016438197804932672,0.004201678647430931,0.004149050463082936,0.0029430317531303055}, + {0.0022784518756188915,0.0022136026232545325,0.0014879934582520573,0.001941509344664574,0.002661800904067378,0.002389105149293663,0.0023504121263424123,0.0018175784674841402,0.0026350361568537187,0.0015651143095018764,0.0011335371622110983,0.0007934760256310023,0.0011831365533589964,0.0015708080523097513,0.002547673608380147,0.00215707884966983,0.00336436669073873,0.0035848803162897807,0.002770858267349285,0.0029154626105504598,0.0023868963034084775,0.0015912448793603472,0.000491199494501015,7.556914725159184e-05,7.556914725159184e-05,0.00011335371622110983,0.001797515681931872,0.004482173138298286,0.004700057698503067,0.00519545385164682,0.004037839545062822,0.0028360826925720594,0.0026243971621399617,0.0013063165768650094,0.0,0.0,0.0,0.0024398542224054512,0.008477611454555603,0.010249343932657513,0.003533155972300902}, + {0.005418134662864325,0.0072172835054123505,0.00543338108690109,0.005531553896455954,0.00680784659863196,0.007275791084277072,0.007340451414899466,0.007503520686089281,0.006990491216191844,0.006131511841977056,0.004840965541963548,0.002191504928810128,0.002618950833160209,0.004314927332052269,0.005112732088378023,0.008717165285458989,0.009311554676629245,0.009236740219902038,0.009049437785165454,0.008854387719586165,0.008109701981776787,0.0053630689815426374,0.0013602446379066763,0.00037784568969518,0.0002267074756955781,0.0016094517187151421,0.006625012651424777,0.010052611957926054,0.013027002774707657,0.015352038571249954,0.015061727362897813,0.011880447058895998,0.009220037650773016,0.006060233077931568,0.001042683201104292,0.0,0.0,0.009944009085849923,0.027085853374014,0.025871188241667377,0.01553897682348326}, + {0.010330608419473968,0.009811199825749094,0.009229074678084462,0.010574232068161625,0.009007204551788456,0.010277628034898114,0.011252051084591777,0.01172710995497998,0.010673765588352382,0.011347810325959901,0.00824894434004718,0.006289551301714856,0.006436361412270365,0.006426535149701123,0.00836646109820074,0.00971923939139815,0.013923733764835957,0.014558527642005804,0.01409399837843391,0.014449766225590875,0.013386880052644611,0.014968042543365286,0.0044640775339594456,0.0007556914725159184,0.0005289839968203403,0.0042823691976834315,0.005421365173086516,0.011378301734820262,0.01764179810617964,0.020435888098686378,0.02330306649263576,0.021442479409905648,0.017732337698490863,0.010286646490972204,3.7784568969518014e-05,0.0,0.0,0.010825457117476591,0.034653626131356946,0.0442882876362733,0.029832841844509118}, + {0.006861550130104582,0.006785033245817084,0.005380926099792824,0.006354175921379386,0.005693561582459962,0.006668793977914203,0.006934725169101685,0.007127299587919634,0.008339357712593531,0.007187143149121192,0.007474676391286155,0.006474145760663148,0.0053783935002107534,0.00413583072129751,0.005881418252801878,0.007424665657620881,0.007370340362968726,0.009161569684904013,0.009789008644019092,0.009956767025651705,0.009430530150448318,0.009682288293557998,0.004237369904337323,0.0005289839968203403,0.00034006117737062964,0.0005289839968203403,0.002942867692181009,0.005936434169672367,0.010710137399042407,0.012259332217611359,0.015302834412667493,0.01514805870358874,0.0141234538616631,0.010769811133089599,7.556914725159184e-05,0.0,0.0,0.004616933155650453,0.01693430553878751,0.028285868778565943,0.024215723669501584}, + {0.001909167838815356,0.0020806040335064027,0.0020951187985086012,0.0025562657879837033,0.0027553917283567124,0.001560170188956082,0.0021522813672447683,0.0022883243161508906,0.003127492313035309,0.0021560383062423838,0.002146316305816718,0.0022151353237127103,0.0008312606310811111,0.0007179068670658096,0.0014778905812199434,0.0013769569451984104,0.002973015744799294,0.002233046216200526,0.0026936641062746914,0.0033353792442510585,0.003775799616870287,0.002342643453741346,0.0008312606310811111,0.0011182523596694849,0.00011335371622110983,0.00026449201880543693,0.0009564290876686437,0.001863259247508282,0.0032188210405520727,0.0029605784801635475,0.004600306010527268,0.00411009625061091,0.003751661264377383,0.0027807738073131905,3.7784568969518014e-05,0.0,0.0,0.0005667686530662077,0.00492119215597807,0.006473769148591561,0.008307801232111174}, + {8.262546828609819e-05,4.6523732028006315e-05,0.0,0.0,0.0,4.6523732028006315e-05,3.995099169906181e-05,3.8326173901512065e-05,0.0,0.00025626352683132483,0.0,0.0,0.0,3.7784568969518014e-05,0.0,0.0,8.534895217355025e-05,0.0,3.8326173901512065e-05,3.8326173901512065e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,8.045905486911021e-05,0.00021834741731814378,8.534895217355025e-05,0.0,4.6523732028006315e-05,0.0,0.0,0.0,0.0,0.0,3.7784568969518014e-05,7.556914725159184e-05,7.556914725159184e-05}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, + {0.0,4.267447658703638e-05,4.6523732028006315e-05,0.0,8.430830099752432e-05,4.267447658703638e-05,8.262546828609819e-05,0.0,3.995099169906181e-05,3.7784568969518014e-05,0.0,0.0,3.7784568969518014e-05,0.0,0.0,8.430830099752432e-05,0.0,3.995099169906181e-05,3.8326173901512065e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.995099169906181e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.7784568969518014e-05,3.7784568969518014e-05,8.430830099752432e-05,0.0} + }; +} + + +static std::vector> ReflectanceBackSolar(){ +return { + {0.004369689541395494,0.00449295007563265,0.0055488198521669975,0.0056674381014755176,0.004854283903433088,0.00494609639769443,0.004599829288381644,0.00600428146343387,0.006293392146763423,0.00437189296831315,0.005783388565301091,0.005473757655848204,0.006243883979502629,0.006458884596680876,0.006088991216229048,0.00601485765249376,0.00357510604393674,0.004093246956447981,0.003476610955156501,0.003937228637439657,0.00473077874848562,0.005799098713064632,0.005665221667315136,0.006816802377849735,0.007196443470546932,0.006667536378684937,0.0073194620700694,0.004074958857723376,0.002043460289139179,0.0027200680950800406,0.0014238924553374313,0.0011175173706009594,0.0033571979633174693,0.005228822170262098,0.0088564099216937,0.01045075050187982,0.007848567132165673,0.005301938483069196,0.000207516509859001,0.0002666856765815372,0.00020927339813389868}, + {0.004566194675789189,0.00513834646790979,0.005164843721923603,0.005052967829169727,0.005906478028261318,0.004075185599881477,0.003939251791720272,0.00462947170260153,0.00500446944249778,0.005944114033886838,0.00598710678887446,0.005988883086273164,0.005749031527167488,0.005504483932635442,0.005796839681401943,0.004976386650284596,0.0038809508230343254,0.0023745927765956238,0.004543764539970831,0.003749036648307015,0.004124652748591709,0.006344073497907088,0.005581150722886518,0.007161022155023421,0.007093631177170634,0.006782369294182355,0.0074093447951091886,0.007746080030549169,0.002531961229957658,0.0017067978562987436,0.000550630219803938,0.0035365496095547933,0.00288686601100711,0.0039290296488214875,0.008297916889736835,0.009707415647128723,0.008896560419114925,0.004445245597521819,0.00018287998148711085,0.0002933869896473835,0.00022556299198713876}, + {0.004074766410519037,0.004241676588140145,0.004573678769106546,0.004443751187444717,0.0042531110645283275,0.003715157925261233,0.003924584461076304,0.0037157449796347496,0.003482338281730211,0.004145094798245354,0.003941774028878599,0.005152489643614174,0.0040705029252398025,0.0045538829370073385,0.0044879510395596355,0.004465065263129928,0.002516159985078432,0.003904594694313195,0.0028524518261247257,0.003680208187414125,0.003146379647158069,0.006196334244791652,0.00487804529551632,0.006033768684518018,0.006339488484573064,0.006180791993045771,0.004862118903685796,0.005591579523337043,0.002600789971244771,0.0038126467904653857,0.0015003113450333273,0.0017756272565122794,0.003285917460397354,0.0035260358566647455,0.0074829104252608705,0.008842882688505364,0.008741506157408074,0.008335332694769671,0.000221081591328136,0.00040717601218047807,6.434737567738796e-05}, + {0.00452788338273823,0.004330377989543395,0.004706646006395094,0.004324838801680508,0.004335328349539308,0.003878589994810106,0.003603005844198325,0.0038865742202920453,0.003802835796624716,0.0035476612610649077,0.004623138536438874,0.004873270273037508,0.004836005789756628,0.004974512214908063,0.004719274871042444,0.0039012695903582503,0.0035505100663641704,0.001793457525112685,0.00404484508039964,0.005219158977866707,0.0030177904852575813,0.0026499080291481534,0.004682631552092232,0.006134249356074844,0.006562906138305728,0.005866263888889244,0.0046553155469491025,0.006723311352224136,0.0024140148022895073,0.0006194590101600396,0.0023467496303144425,0.0023803818868387634,0.0035005718553603603,0.004283934801393284,0.00761237264364169,0.009119744406322378,0.008417583535959217,0.004017569732418755,0.00022745649417079246,2.9932980499337027e-05,0.0001631091044736934}, + {0.0037229025048111696,0.004327837617888737,0.00407239558624079,0.004283518415973068,0.004452412473845554,0.004221751403176302,0.0033328119921173537,0.003881331787654402,0.00414604253071696,0.004378445971084007,0.004206536273349949,0.004925722127116729,0.005004625061291194,0.0044680037945803485,0.004383484655259967,0.0041202925273057574,0.004069527244474083,0.0019272055691824065,0.0038357652940996592,0.0027925726094891893,0.0032191181143537643,0.004437324551868033,0.006435702495386085,0.005082885983824557,0.006653209992689813,0.006015397163940319,0.005031254100589521,0.003778698059992133,0.002291060533809857,0.0006882878005161416,0.00058504459114848,0.0007227021718606834,0.0055394027359899674,0.0037913718788431844,0.006317111161006489,0.009376167263970024,0.006744147446888331,0.004066686851001491,0.00023641929548879798,0.0002877063428993111,9.87617605509512e-05}, + {0.0052295993656084686,0.005023655417163336,0.0051200142936513445,0.003843414448485869,0.0047705000915269245,0.005184818634802781,0.004128655376116017,0.005412535657265289,0.0048181236482250835,0.005235532507353785,0.005454055031742486,0.005730773194727503,0.004830579790031455,0.005869402902208659,0.005566188796052819,0.004772941953681411,0.0027718721345004983,0.003334253218420327,0.0023509391826470934,0.002867155699145724,0.004531022396057644,0.0038966445787884064,0.004979954575636111,0.006482294201345928,0.006596217063051215,0.007382519479855205,0.005246550598321751,0.004495392702221292,0.003343984762558089,0.0011700892390767899,0.0005442553169612813,0.0008947740776523824,0.0024983293449556817,0.006866860485208622,0.010433386669554474,0.010361722574880917,0.009558750167778535,0.003351531481925012,0.00019752356975029993,0.00017959796711428886,0.0001807243107055427}, + {0.006213401841107214,0.005473187731505794,0.005327278898883835,0.006226626543477097,0.005890893717382083,0.005821106027854471,0.004212846545324349,0.006595685624871705,0.0051078662139672345,0.004949510864070586,0.006206858841928248,0.006796199739200675,0.006202338795935547,0.005977564973487264,0.0064936053042762695,0.005621952197026334,0.005007665936632779,0.006219274606966598,0.0030825913635403723,0.004627296782756598,0.006548437887559642,0.007704847120829253,0.007095072031951263,0.0076893562793640445,0.009017550063416415,0.008216925018605726,0.006878704337161461,0.006773560709686651,0.0039642265051066244,0.0021197705073072322,0.0018100414413946633,0.0009636028680084844,0.0021681066368525515,0.004558467382543062,0.011669873779918396,0.010965091686226556,0.009222350466084753,0.004237976786375994,0.00029439168841117607,0.00037939875854155365,0.0002854288870931706}, + {0.006246157403036168,0.006160743343495964,0.006098901367303848,0.005467913425054922,0.0063704575637831854,0.005954576944294514,0.006354131610185785,0.0050910777010310495,0.005176138001200601,0.006735553363972738,0.006575629117273818,0.00655088703996391,0.006066161135929004,0.007481901006060347,0.0061005571863150575,0.005473991060952879,0.005770502343223002,0.0047413008676582494,0.005561492192828148,0.002753151614244073,0.0032693671914220583,0.006102074119058069,0.007147357051468173,0.008772956575360024,0.008514046620959968,0.0076201817138627755,0.008193852780018144,0.007135604327637602,0.0062947086930880206,0.002050942137542464,0.0006194590101600396,0.002414797102169915,0.0030933525222725266,0.003426735644784093,0.010826090365272642,0.014863459392659248,0.011247248186282529,0.0041060733647671115,0.0003288061074227359,0.0005810933325466946,0.0002854288870931706}, + {0.0060285546628249575,0.005427308226870767,0.005987695616741436,0.005794908227860292,0.0057817726978629785,0.0051794312313423185,0.004693406730535504,0.005832134304142564,0.0056469521458926974,0.005034198239924388,0.0054673667474494266,0.006435018796133974,0.006229353377289629,0.0058143867518377565,0.006412958318038673,0.00561746729143955,0.003807104798660274,0.0035338882968621727,0.005197637228200699,0.005197637228200699,0.006794092576619577,0.005718476506105538,0.006037911418025389,0.007324648916300593,0.008450387318684562,0.007823565663057684,0.006476328814265042,0.009621906162424794,0.005621905931979642,0.0020853563224248486,0.0015347265603644785,0.0018092591415142553,0.004785446505550271,0.004169148416611226,0.01029166140985837,0.011919369869824776,0.010686998098452702,0.0054293409938548165,0.00030524808584489986,0.0003435230187750743,0.0002731111226394806}, + {0.005297173877463446,0.004661869161469648,0.004740900689181028,0.005405377477093729,0.005279018801488995,0.004329796472646806,0.003721608926652149,0.004974506097475663,0.00394858817231957,0.004667673411176292,0.00493283720357661,0.005112199683889884,0.005242609513543988,0.005347665003948474,0.004972570120718723,0.004461604836942496,0.0035122645705555414,0.004683329384074771,0.002439378561078623,0.0033221524688824312,0.004426001433061074,0.004886559096219168,0.006508621681638226,0.007186411149923577,0.007553764500089462,0.007201992125192683,0.0056346914273038996,0.004563741719700424,0.002985844192939326,0.002595708070774161,0.0006870843178232635,0.002823082609034159,0.0022285681135849667,0.00528039410563635,0.008220887613645205,0.011407668932108907,0.008546682971444954,0.004880372889830814,0.0003083512870786748,0.00020103842691906706,0.00021634687481370912}, + {0.0044468433208845115,0.0038622515467101244,0.0046304395971101505,0.00436762768521874,0.004076055844850658,0.003301305753385648,0.003167832142365308,0.003210032264360532,0.0034560918798364265,0.004191972434769616,0.004589500761518364,0.004247198398502655,0.004693618934912518,0.003949530317003248,0.004106788230609533,0.004748741517732107,0.002024722845484839,0.0034485823020612492,0.0022157008612232517,0.003768825332503701,0.004717150088294394,0.002620073405623861,0.0052247476558489455,0.004622882172000677,0.006343681283486014,0.006379913579234035,0.004991402340756131,0.0038736539345295157,0.0027449181424972504,0.0008131261293640357,0.0005420840754054737,0.0013430280532370712,0.0030476604951415933,0.002288799319481804,0.005789472971452277,0.007939580866765918,0.006323499118388427,0.004902440650896036,0.00028939285620165756,0.000400190442012107,0.00024254108200280776}, + {0.0033311502214397187,0.0036054855749062917,0.00300049929775269,0.003152533589054029,0.0030968659576197863,0.002876962062900249,0.002464985877772654,0.00246389970647847,0.0030622637469399795,0.0022058246806824617,0.0036020847336070277,0.0035234666559381634,0.0035284983122842034,0.004227085342131759,0.0034141747564207484,0.00303426732696467,0.0026097607899172727,0.002460048609494925,0.0022982166563552332,0.002917780746474488,0.002811031215064944,0.003830671079219381,0.003842206292465636,0.005052038488457962,0.004109064046125454,0.00423293383835408,0.00485850698317359,0.0026837254873576305,0.003056177320646457,0.001992707746304745,0.0003312736279118171,0.0006625472233119841,0.001635668809187621,0.0021253532303853297,0.00653970895352929,0.007041782074000186,0.004630945061257083,0.00201775766609131,0.00019573142143269502,0.0002777343912893906,0.0001466572324101363}, + {0.0028584430956799206,0.002456531216996733,0.002479709361334147,0.003085395191052265,0.002576569137055363,0.003074076229354212,0.0026032081588280354,0.0024153444770048252,0.0024539351923974395,0.0037909900948377992,0.003184721429379481,0.003186799641539029,0.002607326385025252,0.0035888656990555787,0.0032885991392474253,0.0022629879277727234,0.002057289783920492,0.003789273320214676,0.001984191245916382,0.0017639643632875197,0.0017467151109625927,0.003860787007284302,0.00463032272079472,0.0037487593014744365,0.0042261873642182035,0.004258138262090509,0.003922717406976045,0.0030097129767416766,0.0009335892772705459,0.0004517367758183273,0.0011021013317054611,0.001553838500730728,0.0021648860904616204,0.0014455575295071776,0.004362354663608265,0.007570607988616731,0.0034102525018631204,0.0029564131749277717,0.00022976891088232406,0.00033366620748596167,0.00011261983614012362}, + {0.003232178544128189,0.003130394670414724,0.003596247683939297,0.0028100362358825116,0.003179248430448741,0.0021883227760296255,0.0029636605309081806,0.00307241392094663,0.002676080550700582,0.003344623460290304,0.0037930622524692784,0.0035828099441301948,0.0035018363053882476,0.0034795124568018855,0.004201905455489843,0.0032959501276465025,0.0022991858715884286,0.002057289783920492,0.0016657853138742633,0.003237771854567593,0.0038503805003855664,0.0038676291760887725,0.003824901586307113,0.00415524440996691,0.00484987736677953,0.0039858870096861655,0.002866352223233572,0.003301454123061885,0.0012949782879103585,0.0008432418629724828,0.00038592645603154345,0.001493606393095667,0.001415441926558759,0.0025950234858372963,0.0067064029319463935,0.006761237203905474,0.006286417434308256,0.003990450829519707,0.00023142590087467076,0.0002026955395968863,0.00011261983614012362}, + {0.0036631207562038354,0.003987598472028328,0.0035932382092974885,0.004349927931838585,0.004842902617919142,0.004257872936353285,0.00380963297438541,0.004127312688175552,0.004841491814730302,0.0037606020503947487,0.004670665789597499,0.0046056927104408,0.004447081250955714,0.004502393996257766,0.0037786720685310782,0.0034964062463729013,0.003061497287853005,0.0032870017743947414,0.0028196016970612314,0.002767201829994171,0.00266999199581411,0.004541266888237259,0.004541427606206308,0.005482015490981091,0.005985628234387013,0.005834368088417505,0.0041389100661507515,0.0051824309826547935,0.0016262523740524155,0.0006625472233119841,0.0003613893615202641,0.0014333748620823275,0.0036362087960603666,0.0046695624423371595,0.0068670644656778955,0.00943241646997743,0.006306023799677493,0.0035596286038362206,0.0002946998616880296,0.0002777343912893906,0.0009403650732343633}, + {0.005020316852928222,0.004777573910383145,0.005010379329651153,0.005235906304440011,0.005080119886525839,0.004228022334025587,0.004064136951191804,0.0047290725827718655,0.004482878093021716,0.005056463673707513,0.004858471404386549,0.005829455762096347,0.005237861506010499,0.004840969174617212,0.005330101431442857,0.0056359819987296346,0.0037334615701558227,0.0021081048000530685,0.005056933233950902,0.004206482850470922,0.004279832813948213,0.005556687598990482,0.006207720837936955,0.006638678177131367,0.006853991101722286,0.005991024021215601,0.0065214329035446226,0.004827912906882203,0.003129275778905009,0.0033308409743033184,0.000511968267572316,0.0031249253520481595,0.0037883728088461124,0.004780608744112129,0.008947859559285468,0.011169082493628482,0.00765320148045848,0.004403554978747712,0.0002900004848355792,0.0004332421536897454,0.00036073957877139946}, + {0.006147273705608418,0.006206827767442303,0.005972585541799541,0.006185468146924676,0.005191718272927312,0.005213875349016555,0.0051279648468589385,0.006258846328060657,0.005574717781153873,0.006307341521398305,0.005851869250823232,0.00692470610636557,0.006958878997636987,0.006832493251482731,0.006574404484913797,0.006435530584508025,0.004425154903300434,0.004564703168943206,0.0038893175139272924,0.003382384496771935,0.0043824848959453195,0.006538488233077355,0.007252731156077832,0.008522899165735169,0.0091664650368433,0.00809028892810892,0.00593346605202021,0.006368824039369662,0.0037782712121523206,0.0008432418629724828,0.0007528945633853363,0.0028058339333309527,0.004979236524180936,0.005408905586167949,0.011213425851083711,0.011765295857756078,0.008349211710520294,0.004371170516549666,0.0004310790039238369,0.00047002877920841816,0.0003273096682680756}, + {0.006238049913607621,0.007082977806837232,0.007047796440981403,0.006985745484410053,0.00740499527407491,0.006170457659102958,0.006164815274474533,0.007546858939701322,0.005907077713473611,0.007185882700653362,0.007371996237404912,0.007932085109509223,0.007608578240634711,0.008504793243695295,0.00735381948290746,0.006815427781995693,0.004971753035471498,0.004517338313669861,0.0060350901095028485,0.004859613606136049,0.005814871317980902,0.008083809086310552,0.007696478780902751,0.009724548982955094,0.009932165105605439,0.009324138357325387,0.011066825379107453,0.008334152473626056,0.006149616998134245,0.0030173289657614752,0.0024752447572422625,0.0017037323353980163,0.0033299846297048744,0.005291892188124336,0.014502862324815607,0.015526033831385873,0.012800646418664028,0.012486363043616307,0.001092600944741667,0.0004211840120195399,0.001195720530160214}, + {0.007299116484404014,0.006395433371257976,0.006483015174668314,0.007149706355615101,0.00678909702587564,0.006340524181415078,0.006559944695372743,0.007767691158586052,0.006598723199283926,0.007386986273558356,0.007772051805142766,0.007461305047406786,0.00818293641468111,0.007257262335441399,0.009309066447021834,0.00728082285359113,0.005770052683139265,0.0038040057168757502,0.004883138545498738,0.005732346609749339,0.0057777904558933965,0.01016335443208338,0.008382696256545112,0.01066239762624419,0.010869176629109646,0.010474649593881688,0.008503651041945797,0.008498559189972648,0.003709307254318919,0.004423601300355811,0.0023547820203320856,0.0019446592078327578,0.00456128179623011,0.007694722746928409,0.011427026245968856,0.015102475303387741,0.01333340808324018,0.007280390595865672,0.0011829483590397305,0.00023054673677833163,0.00022750425974440555}, + {0.006152999516358183,0.006708267830874808,0.007605152862240936,0.0073338544710963,0.007240334193938066,0.006596194651694538,0.004590662188081413,0.006227685849748116,0.006614485749052414,0.005767212514449583,0.008112921122093457,0.008686746436326904,0.006994175528345905,0.0076140423264658705,0.007526389690597953,0.00707882449872914,0.006435282759853464,0.005008607751427439,0.004645381540558351,0.0053794135505366185,0.006662243602699999,0.006483290891865064,0.00992514872342994,0.009504743641475659,0.009963733304548927,0.010088164591379801,0.008112199731514827,0.007458987518830194,0.003550212088955458,0.001234747082013521,0.0025354759631391003,0.003925184286712652,0.005311194293521634,0.0077857545455725895,0.01305693637083434,0.013005817383040684,0.012461887291841306,0.006842280773366779,0.0003912334615179156,0.000281277915793237,0.00028607884370531394}, + {0.006664616339739242,0.005637109153105926,0.006293674280009966,0.00711009367023609,0.006091346306088859,0.0060165768716940885,0.005793392367438394,0.005724183118405436,0.005496592899084684,0.006794361054640975,0.005992674061075927,0.006834553140566953,0.006906418284709811,0.007894836652931933,0.006995091663709399,0.00572877638275239,0.005671011154853936,0.005114367536189955,0.004101713057726377,0.003950233304760994,0.005730519743317418,0.006706344122665123,0.008836407990589,0.008751941901305432,0.009754757004869987,0.008826656127237553,0.00824533760147097,0.0066486871830990215,0.004610230925816218,0.0030775604967748136,0.001493606393095667,0.0034561985364519937,0.004328871424183731,0.0031621570375213516,0.012637343037309231,0.01510158791936474,0.01028446257432476,0.004387875695609447,0.00043997181991588144,0.0005118245298860961,0.00032051591973905917}, + {0.0049178952476077445,0.004538947793876508,0.00516885398454028,0.004921322424727972,0.005135269253182003,0.005333565681729654,0.004382925102729408,0.004989476624278175,0.00514885261936575,0.00467511992568806,0.005404625103973515,0.006463053156635308,0.005350748471319369,0.006137410508002553,0.006295522642957223,0.00551862677192971,0.004685919647351933,0.0036038492080293786,0.0032567283750450002,0.003868125600170819,0.0052062410647014355,0.006418622046551074,0.005939131828049448,0.00795710065415431,0.008231685245717735,0.007289027095609792,0.006277405784645818,0.00439784187197828,0.0035623209115998424,0.0034235169047229803,0.0006154407084903149,0.0032756790017409395,0.00340679424157489,0.004271941882298056,0.009301253170322151,0.010522613037872282,0.006659923434117822,0.005534342137594281,0.00028797462996148215,0.00039638387296540265,0.0009560666839026276}, + {0.0026492096243532393,0.003210807274363152,0.0030786269201106076,0.003186810439777405,0.0028070221531548796,0.0033315206031595216,0.0024958815998719765,0.004280487948013556,0.0034751157910391417,0.0029794744117248332,0.003289123528986745,0.003312767041873221,0.0036108269893810195,0.0036688486144721187,0.003604554978151297,0.002598729417436977,0.0018719991328373716,0.002310568289315261,0.0022141766178729954,0.0018205529012975954,0.0023746466358467015,0.004631825803699832,0.003758780128741778,0.0040020765980599785,0.0040482277619626385,0.003926688132802515,0.0035429073519318895,0.0025224842196310804,0.002399942749460685,0.0005322152781356344,0.0004435127772503057,0.0006209178187701059,0.0019853254628563284,0.003510875565381884,0.004598933990240614,0.006692375676260353,0.005454560789790739,0.0030590012867202873,0.0001626006141893334,0.0001990054087139857,0.00024360262203460708}, + {0.0009758430948257229,0.0016076014817198103,0.0012350275500975303,0.001369529410880794,0.001399042468902909,0.0013929909630319194,0.001609456044228645,0.0014078556187454596,0.0014205861851368784,0.0014188408364093578,0.0015009083621872505,0.0011516740227096372,0.0016579997030176192,0.0016185212578403226,0.0018957296903241193,0.0011905533898847968,0.0017013114953066295,0.0017115282295418473,0.0012215132390156105,0.0006800528595109743,0.0010712692156228897,0.0030029782786453155,0.0016167626593985144,0.0023033628537817694,0.002158631406540429,0.0018383388359494727,0.0014386901129316582,0.0010086543578514489,0.000591350318876503,0.001022902217683551,8.870254418780401e-05,0.00029567512300153714,0.0008962708516040287,0.0018803600217505072,0.002827289476230746,0.003317127721590985,0.00263705811263437,0.0004139451966538975,0.00013628680206611464,0.00017876526562020124,5.365790191396569e-05}, + {0.0009420796910702767,0.0009892509306013678,0.0009819703571426713,0.0010383535526779539,0.0007841492319821005,0.0008337755231187351,0.0006263578708035543,0.0009507861987806045,0.0013048764302632976,0.0008644964311179045,0.0008204100545090439,0.0009011236118584584,0.0010218245341041773,0.0008934947955568812,0.000886828711927077,0.0010594053009978276,0.0007129792029301455,0.0008667033517104259,0.0004435127772503057,0.0004730802373947661,0.0007391879002518429,0.0006209178187701059,0.0006203184179567481,0.0012901993603910825,0.0013373285941120636,0.001280348800077995,0.000794711390484614,0.0007687553603963031,0.0004139451966538975,0.00029567512300153714,0.00011827006377530058,0.00017192796315977537,0.0016857996934342959,0.0011070825910825229,0.0021409743554729856,0.0013126347402384257,0.0014067092353975046,0.00046027390672801166,0.00014236047109554892,0.0002622573765879066,5.528478217564618e-05}, + {0.001425026043942704,0.0013262036521884053,0.001527496925204015,0.0013048848618996624,0.0016212847447266891,0.0011562209711266725,0.0013760746914451005,0.0009404677952718401,0.001378608681234811,0.001637756229427471,0.001502167085044572,0.0015019587031744126,0.0017171352677244618,0.0015191989905015374,0.0016061761376827246,0.0017787551899958133,0.000772114243671014,0.0011328110145675029,0.0019557578039661534,0.0006209178187701059,0.0009258383924512942,0.0021802781453255826,0.0019590413240705164,0.0020672979098890127,0.0015959136317072406,0.002577562474896567,0.0016364786317498866,0.0017570879743794884,0.0009039602233157187,0.0003252426957685688,0.0002365401629634739,0.0003252426957685688,0.0010813653455383242,0.0018009027679810378,0.0028466601610277835,0.002589809631484801,0.001969637801139814,0.0007983229331633348,5.365790191396569e-05,0.0002548866809816647,0.00014236047109554892}, + {0.002661627093973445,0.002730428849219063,0.0031647139273955644,0.0034026835357849556,0.0026606585820172037,0.0027684784150945984,0.002578092385174305,0.003178626049103775,0.0028581982531333187,0.0020944678583235217,0.0029762668546415203,0.003309775412974614,0.0033392101772304838,0.003591213720383169,0.0032630039215393986,0.002151989686123901,0.0015079430751521459,0.0027852043726034684,0.0024599616244383024,0.001655780658936525,0.0028544441634034347,0.002818159140273345,0.003139396939458981,0.004246330262873898,0.0037746609110666314,0.004551532613410763,0.003486501228368292,0.0022504896641488037,0.0013009704927850804,0.0015551177614157308,0.0010820372584244196,0.0006504853596173715,0.0010644305641006454,0.0024218205150822346,0.005505495100551222,0.004891097417399003,0.004970872742605142,0.0028892856964104624,0.0017424289722994838,0.00012858630902605966,8.870254418780401e-05}, + {0.005016684310308013,0.004863852072067601,0.004606499577098831,0.005615360526904491,0.0045490957922075595,0.004766942457248637,0.004354009486369716,0.004971694303184738,0.004979232186094901,0.004230914425068591,0.005658611286191415,0.004917265603117006,0.006212968413015364,0.005775831430200016,0.005850980274374588,0.005023759579443823,0.0029137004209622425,0.00296105337610897,0.0041403670821466365,0.003553960022686707,0.005261158323893134,0.004276213108376586,0.004793363989549015,0.006680090782076791,0.00814110577826123,0.006540614653329704,0.006192530126467005,0.006161759471813284,0.0036291452433495955,0.0018507926820579953,0.0005322152781356344,0.001702954779075954,0.0019514556578725556,0.004961028204889457,0.008794926986525025,0.010852297246854185,0.007940440059895061,0.002424536309019763,0.0019291198556506811,0.00039105279019581413,0.0002452294857943707}, + {0.00649869006999102,0.006373729683799501,0.007240605731683693,0.0073853733928032185,0.007325905868550097,0.006162960456029299,0.005188753531683107,0.006977223978318741,0.006788690258455856,0.007016978017553222,0.007025885758310591,0.007246306403188138,0.00761281317018618,0.007891602739256693,0.007843510853566745,0.007707237861316477,0.0073425162704825854,0.00472644321794704,0.004714782264854475,0.006687475612719139,0.0067180548270691955,0.006805414933151477,0.008466310379294444,0.010087503261342938,0.010637818099083454,0.01033364561270258,0.007738345781424793,0.007787972791057297,0.005630733809036546,0.0031102347158034095,0.0015551177614157308,0.001969062926149862,0.004114858166076,0.00805269284385906,0.014218617712669298,0.016065386980464124,0.013180623050184175,0.007968583260069969,0.00047791939440844047,0.0005919102680633098,0.0018535952796918998}, + {0.008337037735068288,0.00783324834759126,0.008655581265079515,0.009035420539011657,0.009333411431417625,0.007729500597386653,0.007112187977091163,0.00930507230410399,0.008348530862461607,0.009316032226858796,0.008726906964422375,0.009432715630964202,0.009905293190459909,0.009337316802771688,0.008837057542694903,0.009466291611488454,0.008384097106659388,0.008599843011432374,0.007406341270431652,0.005713944423801614,0.006729437457867957,0.009033166883063283,0.012036862657827664,0.01236566925993853,0.012567823764382834,0.012451013440059744,0.009566385897520594,0.008865867161340297,0.009220578876091987,0.003896596748842136,0.002518885115422777,0.0029321581582866826,0.007043629137289216,0.007364569739360784,0.015028985475670139,0.018793346564747772,0.015529508308699683,0.008098814701802754,0.0011537119492190176,0.0005764047296922758,0.0003731566817605964}, + {0.009451860263590298,0.009422516645323533,0.009625176084334141,0.009222049913575572,0.009640726828321285,0.008971656891262338,0.007655814515646834,0.010287160718610003,0.008567073251932135,0.009225222617887711,0.00975400795272413,0.010955389979365193,0.01056298371278711,0.011001910533257,0.01005217109141584,0.009177097324849965,0.007176309367126245,0.008290592270920908,0.0065227033703580675,0.007871731540479845,0.008570172402262186,0.007774424753429918,0.010801629134898934,0.01301160487665367,0.013734280429483608,0.013252026964999514,0.010901233259796202,0.009278981207632752,0.006848617433365407,0.004310541991870033,0.0026667221330829998,0.004399245137173286,0.005491898562946952,0.009437422814800974,0.018430978924176812,0.021487627784351312,0.013436703891778996,0.00878878433466493,0.0012648779518680047,0.000583137511781544,0.0004007260849904869}, + {0.009036213998151769,0.008981801035131054,0.009221559674146932,0.00933067227582477,0.00930899092517234,0.007639429117953338,0.00717876096176088,0.011175083491967833,0.008703534468419052,0.007737863576141087,0.009473571727229747,0.009923865995530341,0.010538925845199276,0.009333841444872235,0.009270668011668454,0.008781950698159546,0.0067345992213341446,0.006603715737070874,0.005268875680205918,0.0054108270964858245,0.00781838007831928,0.009836404312320253,0.011223890302127754,0.011338620782663534,0.013099185488094685,0.012066538892103826,0.01085139257443042,0.008731605397425119,0.005255358640887374,0.003228505200799173,0.0019099274397367857,0.004251407234191243,0.006345298127683514,0.007164614687488221,0.015524573753743139,0.017731695139661885,0.017005084783044376,0.010630574925954633,0.0003969173546434005,0.0008217387280284277,0.0012899985248354697}, + {0.006584213759650443,0.007732512293579808,0.007130663294377424,0.006949813125988096,0.007097454294803355,0.006637869886945857,0.0066484383408694355,0.006247608062534831,0.007153230773876214,0.007756024116351461,0.008119472289190365,0.007710044313412719,0.008014991384113443,0.007986065975010373,0.007938852184021848,0.006558857100864762,0.0066449247575442625,0.006518125070105729,0.007000756675412995,0.004795795836086763,0.005114300899768374,0.0067506105012995355,0.008876913809497712,0.009662711079487527,0.009676046555562147,0.009879586016505348,0.008967370006430561,0.007582555640831231,0.004998496873177637,0.0029032620551425778,0.0007687553603963031,0.0027251855759196173,0.007335245393405709,0.00484229759345207,0.013146527078600109,0.015160262861893982,0.013120979220414664,0.007500446763899568,0.0011392786740896943,0.0004700566206745701,0.0003252012283786668}, + {0.006043969199448734,0.004726131723446142,0.00531485149209774,0.006125944318934049,0.0058829081616812344,0.004598440520884158,0.006017130567494664,0.005973912612150868,0.004928706749731723,0.006563935730712286,0.005952453712857931,0.0062334958727247565,0.005888818940914064,0.006094952848915,0.005731877077476698,0.006194983451785847,0.0038776558885876937,0.005179643956412172,0.004891522306949437,0.0053781708146816865,0.004696843712295216,0.006617210114984357,0.006969704975889722,0.00740010513849613,0.0081544929663329,0.007822310251978689,0.006616987021549953,0.006869643487658116,0.005415906937888697,0.0010887533121502302,0.0007179068670658096,0.0020620076599467754,0.0027799148972059195,0.007781050242255766,0.010063188758620304,0.011592589031726313,0.007923035671566152,0.003466339946628454,0.0003659261831527166,0.0007337241130624963,0.000481358929847074}, + {0.00017069791681515042,0.0003529435975673492,0.00045035478859504287,0.00019054766803256872,0.0008748774201018057,0.0005945357291342346,0.00020640117835304066,0.00024050037139131307,0.0012318352579663509,0.00018129668282701925,0.000128023439073665,0.0006731229662091823,0.00030877587466566125,0.00027913075085755353,0.00026759467533251155,0.0008716161684401746,0.0005935087312425301,0.0006805229847409093,0.00021194668990046715,0.0008048508384745062,0.0005957231184832463,0.0007989305157960396,0.000497366212783525,0.00026374543428367333,0.000128023439073665,0.0007690829277887569,0.0006332521027419855,0.0011113147464767179,0.0004448380105153089,0.00018892286024024425,0.00014413902472543426,0.00017700336370300617,0.00024481093028808857,0.0003282751351457578,0.0008893940683952519,0.0006459321095352893,0.0013271828589692407,0.001087872135029318,0.0024287930610598476,0.008169851756745708,0.002402927652759852}, + {0.0,0.00045881377094355956,0.0,0.000677211830094193,0.0,0.0,0.00045881377094355956,0.00035522259316539065,0.0,0.0009176275926828782,0.0005548948627068733,0.0,0.0,0.0,0.0,5.9203780920219354e-05,0.00026967945642442434,0.0009668349329269737,0.0007167300070619392,0.0007892235593810071,0.0006512414977664874,0.0008484274018718435,0.000518017613434396,0.0005548948627068733,0.001013708633650433,0.0011097897254137468,0.0006956288838495789,0.0008484274018718435,0.00029577877919476303,0.00014413902472543426,0.0003876332528227346,9.85929212673696e-05,0.0008481872764655098,0.0008175562023567923,0.0016115508688497994,0.0013468703816160664,0.0013098743841730952,0.0008175562023567923,0.006524332378492236,0.008626736520258386,0.006301953263298075}, + {0.00012529994387261203,0.00044599107424533836,0.0004914045246556539,0.00011497853301813703,0.0008349265048272723,0.00022492013147957604,0.000724582107849052,0.00018892286024024425,0.0006326476232042778,0.0003208678820665323,0.0007371405026685385,0.0001981301303077176,0.00026936641062746914,0.00027965697491067593,0.0014996506231703046,0.0001308320392595556,0.0003238293156086395,0.0010143264016665564,0.0002597053243221083,0.00046526067632399263,0.000485075332289716,0.0006116121858350406,0.00024923955084297817,0.00012529994387261203,0.0009877404562943226,0.00035134584005597485,0.00045195541991496617,0.0008581343174963421,0.0003697432943447016,0.00014413902472543426,0.001269390717590404,3.7784568969518014e-05,0.00046625719676027765,0.00040052860284902605,0.0010648754064458044,0.0015097364551467326,0.0014022797809072024,0.0005467466580477078,0.0015421684798081784,0.003438396122099079,0.0051452736987325194}, + {0.0053947487033112656,0.005633843833117936,0.005513027297798054,0.005200699668215958,0.005247993498353473,0.0045169410344152346,0.004658148626728296,0.004787429890474528,0.005635589868067722,0.005284795795404968,0.0060538529227963,0.006440031529001671,0.005697188091801772,0.006478694697899999,0.006013488665498602,0.004607930092230616,0.004122929006408685,0.00456305424797161,0.005747035255426636,0.0040718546403345855,0.004143364394246108,0.00502101957581279,0.005844207950360448,0.007301472088579126,0.00787106032726071,0.00791871752409083,0.00714262461454534,0.006715755018866787,0.0030821912236136052,0.0008312606310811111,0.001685021546860795,0.002402927652759852,0.002765168734432348,0.004005741651056124,0.010331255942260394,0.012292161978453455,0.010064317040176988,0.0049512154280446615,0.0003330619427650952,0.000461336934828574,0.0002854367626558203}, + {0.014695305328477341,0.013716632166840152,0.014998445082736324,0.014867945652028902,0.014842463620872036,0.014034224184228741,0.01287878178115972,0.014202652046269072,0.014300427825396483,0.014585294959792721,0.01693364873423057,0.016646108873224277,0.016002187967893575,0.016164072512663566,0.017296698876899545,0.014323071859014588,0.010603248760692376,0.011090144582200498,0.009640211965202124,0.011620333783058247,0.01087760332024423,0.01675101489152867,0.016646678401431608,0.0224695501858278,0.022063384218075993,0.019813147485606652,0.017798156688073104,0.012969546614180611,0.011990732248029639,0.005583188555144833,0.007027075037605209,0.0048058560289744555,0.008323601283743428,0.016632737736255055,0.024931789945312168,0.029106235679589178,0.021245926528706414,0.014042642426839247,0.0018259782389095452,0.0011268060168468774,0.0017450144168085972}, + {0.017465756398551042,0.01870161721580289,0.018419696674121164,0.01899917261515144,0.01886502155429047,0.01738788596121188,0.014430334130957607,0.017169212835329756,0.01576312973427915,0.019221981285451488,0.020528598055247153,0.02097572387596396,0.01934305582474562,0.021333418375475702,0.021244926006180023,0.018567065945931365,0.014048359158576251,0.011980867095919428,0.01467257859782427,0.01230677278592186,0.017081366957512667,0.02143396319305083,0.023255883928299505,0.02649625314553918,0.026865969308021865,0.025135434761068273,0.022905828264350208,0.019415278158496765,0.013476732932471678,0.010546538112588724,0.004005380023733451,0.005183701460073042,0.012244267834800107,0.016710065351642014,0.03567271119825307,0.039425836434887396,0.03079323980031765,0.019381445104450508,0.0009569822896572411,0.001297604601620837,0.000828025413015617}, + {0.014682729021995737,0.014721240003721473,0.014523954201290021,0.015413715482232538,0.014461972092455247,0.013445520939591483,0.012411145656557244,0.014716985374033924,0.012949702404318723,0.01693308951910159,0.015020259652394742,0.01624531494180648,0.017075856387290395,0.01710927383967184,0.01768263481791063,0.015979283698366358,0.011462585652391149,0.013266711040111154,0.011742383677889065,0.014533218531926807,0.012703159292469677,0.016996312229691127,0.018427069755507952,0.021613472326939543,0.02241277076334495,0.020842023281129676,0.018059077570301507,0.014733570858938375,0.008000541795564474,0.00588460597144525,0.0037408879456662953,0.0068912224496542225,0.011660497835798412,0.016480160667731718,0.02796939172808811,0.035983566851398016,0.026516971658162587,0.013946292007495587,0.0017520134566970551,0.0014663719717396813,0.0005113289302461952} + }; +} + + +static std::vector> TransmittanceFrontVisible(){ +return { + {10.25719163495026,0.005933134017936362,0.003151622309670851,0.00581548489275795,0.0020697111617153183,0.007727488354779793,0.005474056477738953,0.006385790396186412,0.005474056477738953,5.0030069867901565e-05,0.00067816628823885,7.780542380954564e-05,0.0001278354936774472,0.00020564086545802194,0.0007957063671978744,5.0030069867901565e-05,0.0,0.0,0.0,0.0,0.0,0.0005836267865184333,0.00015384992709894878,0.0,2.6014485450472486e-05,2.7775353941644068e-05,0.00013335610567834832,0.0004223230589757879,5.0030069867901565e-05,0.00046888508575931604,0.0005321491926366111,0.0,0.00034543580797550893,0.00034827750874839907,0.0,0.0,0.0,0.00011110141576657627,0.0009283165075059305,0.0003954658342691473,0.0007059415641370376}, + {0.008591503197617189,10.990877306713854,0.008156627180406049,0.0,0.0,0.0,0.0,0.0,0.012129181022394672,0.0050684483941866865,0.0014321471380532272,0.0005212068747303655,0.00041335814399525627,0.00041335814399525627,0.0004313947827433254,0.0,0.000505382546396783,0.0,0.0005735710565461066,0.0005735710565461066,0.0029447898494639716,0.0006889302867244643,0.0002675382874699089,0.0,2.9937354649205976e-05,0.0,0.0001796241839740803,0.0006829799007344735,0.00010784870269568685,0.0,0.0010789535938300777,0.0,0.00010784870269568685,0.0003136143484548166,0.0,0.0,0.0,0.0004772853629501363,0.0013788500846596663,0.0005257257080180542,0.0007369041960034725}, + {0.002089385587400282,0.008775417034661306,11.560995869199939,0.004756028483060026,0.0,0.0,0.0005735710565461066,0.0,0.0,0.0010546765012689778,0.0053400307654666804,0.0006478961344490736,0.0003653842347162481,0.00022164770726309778,0.00022164770726309778,0.0,0.0010107650836807538,0.0,0.0,0.0011471421411316353,0.0,0.000599118194737424,0.0002634858899711297,2.9937354649205976e-05,2.8039422236838826e-05,0.0,0.00014968677324602987,0.00041335814399525627,0.0,0.0004178769772829452,0.0,0.0004178769772829452,0.00010784870269568685,0.0002515851179911482,0.0,0.0,0.0,0.00025968991298870646,0.0013728996986696758,0.0002156974614702182,0.0010305129774807495}, + {0.0058502782427496776,0.0004178769772829452,0.004537105177189581,11.766299116846959,0.004756028483060026,0.0,0.0,0.0,0.0,0.0,0.0002156974614702182,0.000677833545177124,0.0002515851179911482,0.0005759352004320057,0.00010784870269568685,0.00010784870269568685,0.0,0.0,0.0,0.0011903779025760162,0.0,0.000491269464002315,8.981206394761793e-05,0.0,0.0,0.0,0.00027962454022798704,0.0006589928759964137,5.3924351347843425e-05,0.0,0.0,0.0,0.0002156974614702182,0.0003454496074769675,0.0,0.0,0.0,0.00028367693772676615,0.00046133219347137565,0.0011625251380720223,0.000784878245479592}, + {0.0029251387919116273,0.0004178769772829452,5.3924351347843425e-05,0.006646458948007705,11.538389085021487,0.009511693946730206,0.0,0.0,0.0,0.0,0.0005152564887403747,0.00030550941326014716,0.0003653842347162481,0.0008584472312491303,0.0047727709132057644,5.3924351347843425e-05,0.0,0.0,0.0006315982111610988,0.0,0.0,0.00046133219347137565,0.0001418385389619387,2.8039422236838826e-05,0.0,2.8039422236838826e-05,0.0002017132202209284,0.0005451938994684251,0.00016177302600410806,0.0,0.0,0.0,0.0004262484271859758,0.0002537396671958269,0.0,0.0,0.0,0.000433363710972796,0.00103646336347074,0.0003774704874743263,0.0008447529267385816}, + {0.007580738104823623,0.0,5.3924351347843425e-05,0.0004178769772829452,0.0069924599016539715,11.000942057325767,0.015666858938300273,0.0005735710565461066,0.0,0.0005257257080180542,0.0008336561851912415,0.0002755721427292079,0.0003354468239881976,0.0003893711192571966,0.0013242981640761303,0.005122373348382107,0.002526912731983915,0.0,0.0,0.0006168068551427215,0.0,0.00041335814399525627,0.00017367379798408956,2.9937354649205976e-05,0.0,0.0,0.00022759809325308854,0.000599118194737424,0.0002156974614702182,0.0,0.0010789535938300777,0.0,0.00016177302600410806,0.00023570302844775796,0.0,0.0,0.0,0.00036348624622503645,0.000599118194737424,0.0009519741352040301,0.0013788500846596663}, + {0.003373237829127316,0.0,0.0,0.0,0.000505382546396783,0.012129181022394672,10.432144151627037,0.017325334684764816,0.0,0.00010784870269568685,0.00046133219347137565,0.0004373451687333159,0.00044329555472330675,0.000491269464002315,0.0004313947827433254,0.0010107650836807538,0.009506016426377713,0.005908653515904552,0.0012336135792011445,0.0,0.0,0.0006589928759964137,0.00023165049075186766,2.8039422236838826e-05,0.0,2.8039422236838826e-05,0.00032931095722011017,0.0003774704874743263,0.0008441254416211555,0.0010107650836807538,0.0,0.000505382546396783,0.0,0.00014968677324602987,0.0,0.0,0.0,0.0003656407954297152,0.0007727919927215138,0.00026962175673921713,0.0010664006340016794}, + {0.007456423924365486,0.0,0.0004178769772829452,0.00010784870269568685,0.0,0.0,0.015031051019368833,10.275848206165561,0.018602179874874863,5.3924351347843425e-05,0.00026962175673921713,0.0006589928759964137,0.000419308529985247,0.0002755721427292079,0.0002995591674672676,5.3924351347843425e-05,0.0,0.0018504209222298127,0.011808077673723605,0.004274412150951187,0.0,0.0005931678087474334,0.00011785148618445676,5.7976776886044796e-05,0.0,8.601619912288364e-05,0.00037754142721258547,0.0007908286223567702,5.3924351347843425e-05,0.0,0.0006168068551427215,0.0,0.00016177302600410806,0.00023165049075186766,0.0,0.0,0.0,0.0003214625827389078,0.001378046054227025,0.000534097157921085,0.0012650509679345665}, + {0.0055993337344285195,0.013276322855092662,0.00031839969645086673,0.00010784870269568685,0.0006367994300539679,0.0,0.0,0.020149955982348366,10.44421091698666,0.000559306841665782,0.0005152564887403747,0.0002456347320011575,0.0002515851179911482,0.0001677234119940988,0.0002456347320011575,0.00010784870269568685,0.0013411365381149078,0.0,0.0006168068551427215,0.010453986770421413,0.008932445748363807,0.0006829799007344735,0.00023354847924307926,2.9937354649205976e-05,2.8039422236838826e-05,0.0,0.0001796241839740803,0.0005451938994684251,0.00010784870269568685,0.0,0.0005735710565461066,0.0,5.3924351347843425e-05,0.0005412124417079052,0.0,0.0,0.0,0.0003376013731928763,0.0012820980954718975,0.001428921202524879,0.0011682989787467975}, + {0.0,0.008236562731611677,0.000278629259126217,0.0,0.0,0.0,0.0,0.0,0.00044225659147129916,9.68453479096432,0.004210140926400493,0.00029875421598795065,0.0003128770314758077,0.00036172670608358823,0.0004508972066179738,0.0,0.0,0.0,0.0,0.0,0.008776347317499017,0.003825150232954343,0.0002289136704531334,0.0,0.0,2.453709451127936e-05,0.0002777633450609139,0.00042469919617922576,0.00032581813251744587,0.0,0.0,0.0,0.0012459359971106645,0.00010479184545823536,2.453709451127936e-05,0.0,0.0,0.00019396229691843176,0.0008860106818206217,0.00023594403877250517,0.00130620646235872}, + {0.0,0.0005572585507640842,0.005293956579765401,4.718880775450103e-05,4.718880775450103e-05,0.0,0.0,0.0005397631938349183,0.0,0.004089565564226509,10.228709885052394,0.00019396229691843176,0.00024115117828421632,2.619796136455884e-05,4.718880775450103e-05,0.00041286997762625486,0.0,0.0,0.0,0.0,0.0,0.00026214204921125306,0.0001503197618223624,2.619796136455884e-05,2.453709451127936e-05,0.0,0.00020271566001438558,0.0005032931048099968,4.718880775450103e-05,0.0,0.0,0.0,4.718880775450103e-05,0.0003268375340834726,0.0,0.0,0.0,0.00020105486677238964,0.0011730979921357936,0.0006988249494904929,0.0006658503744634421}, + {0.00044225659147129916,0.0,0.0008358878098903014,0.00033032167084404607,0.0,0.0,0.0,0.0,0.00044225659147129916,9.437761550900206e-05,0.0007557244682083829,10.772974539535438,9.437761550900206e-05,0.00033032167881860176,0.00037751043749891395,0.0,0.0,0.0,0.0,0.0005019278608713893,0.0,0.0001415663987264086,5.239592272911768e-05,0.0,4.9074189022558725e-05,0.0,7.859388409367652e-05,0.00022016030735717962,4.718880775450103e-05,0.0,0.0,0.0,4.718880775450103e-05,0.00022536744686889077,0.0,0.0,0.0,5.239592272911768e-05,0.0007130392558292267,0.00032581813251744587,0.0009070015527476585}, + {0.0,0.0,0.00018875523960598724,0.0010381536644760892,0.000365681104235026,0.0,0.0005019278608713893,0.0,0.0005019278608713893,0.0,0.0004037084479376616,0.00016776440916515647,11.152360960595212,0.00040891546476390025,0.00024115117828421632,0.00041286997762625486,0.0,0.0,0.0,0.0005019278608713893,0.0,0.00012057557687356091,2.619796136455884e-05,0.0,2.453709451127936e-05,2.453709451127936e-05,0.00022016030735717962,0.00016776440916515647,0.0001415663987264086,0.0,0.0,0.0,4.718880775450103e-05,7.859388409367652e-05,0.0,0.0,0.0,9.958473048361872e-05,0.0009864613754437324,0.0002831327974528172,0.0003827175770106249}, + {0.0,0.000365681104235026,0.0,0.0,0.0021481674159998577,0.0,0.0,0.0005397631938349183,0.0,4.718880775450103e-05,0.0001415663987264086,0.0002725562055492028,4.718880775450103e-05,11.054694736457238,0.0013601721211721023,9.437761550900206e-05,0.0,0.0005019278608713893,0.0,0.0,0.0,0.0003145379474032762,5.239592272911768e-05,2.453709451127936e-05,0.0,0.0,9.958473048361872e-05,0.0003565195665718771,4.718880775450103e-05,0.00044225659147129916,0.0,0.0,4.718880775450103e-05,0.00020437657594185403,0.0,0.0,0.0,0.0001781785655031062,0.0004508972066179738,0.00037751043749891395,0.0006351488582097445}, + {0.0,0.0,0.0,9.437761550900206e-05,0.0030649223411302767,0.0008358878098903014,0.0,0.0005019278608713893,0.0,0.0,0.0004037084479376616,0.0003459429746682627,7.338676911905987e-05,0.00017297154867686762,10.327660626088033,0.006365788395916558,0.0,0.0,0.0,0.0,0.0,0.0005924636053443824,2.619796136455884e-05,5.239592272911768e-05,0.0,0.0,0.00019750864318814697,0.00055568900300202,0.00018875528009219318,0.0,0.000365681104235026,0.0,0.00023594403877250517,0.00020437657594185403,0.0,0.0,0.0,0.00019396229691843176,0.0010275770805470304,9.437761550900206e-05,0.0007392371435825021}, + {0.0,0.0,0.0,0.0001415663987264086,4.718880775450103e-05,0.00804498486365802,0.00044225659147129916,0.0,0.0,4.718880775450103e-05,0.00047188807754501035,0.00034073583515655155,0.00023949026235674782,0.0005032931048099968,0.002653733391874434,9.678167414938644,0.00754334932546209,0.0,0.0,0.0005397631938349183,0.0,0.001043360811962356,0.00012578266731108306,2.619796136455884e-05,0.0,2.619796136455884e-05,0.00017297154867686762,0.004198860322315435,0.0015745760261569356,0.00044225659147129916,0.0,0.0,0.0,0.0006237063197291767,0.0,0.0,0.0,0.00023578160320684053,0.001048567951474067,0.0001415663987264086,0.0007340300040707908}, + {0.0,0.0,4.718880775450103e-05,0.000278629259126217,0.000278629259126217,0.0051539282888084315,0.007637704268695764,0.0,0.0,9.437761550900206e-05,0.0007505173366712274,0.000707669680751851,0.0004823022338829601,0.00022536744686889077,0.0003355286956448404,0.00819813559275962,9.026306374168918,0.012155054850912882,0.0005397631938349183,0.0005019278608713893,0.0,0.0004508972066179738,0.00024469740186845897,5.239592272911768e-05,0.0,5.239592272911768e-05,0.000324952103741226,0.0015069456594102217,0.005964186089486271,0.0013267697744138976,0.00044225659147129916,0.0,0.00018875528009219318,0.0003792334322754958,0.0,0.0,0.0,0.0003688192759375461,0.0015886357813118988,0.00042469919617922576,0.001022369941035319}, + {0.0,0.000365681104235026,0.0,9.437761550900206e-05,4.718880775450103e-05,0.000365681104235026,0.009223878077689958,0.002159052071125061,0.0005019278608713893,0.0,0.00026734906603749167,0.0007758493103591998,0.000429906335690937,0.00024115117828421632,0.0005617620890906844,4.718880775450103e-05,0.011330213428112261,8.406959437336088,0.014497937791289928,0.0,0.0,0.000970677644028407,0.00018338570501481735,0.0,0.0,4.9074189022558725e-05,0.0001519806777498309,0.0007444442830942131,0.002400038237448689,0.011193966383165038,0.0010038557462798729,0.0,0.00037300689917231354,0.00044929849222509125,0.0,0.0,0.0,0.0005031307919298047,0.001331700503555939,0.001387501537038765,0.000859812671381874}, + {0.0,0.0,0.0,0.00042019565785262567,0.0,0.0,0.0010416910467317521,0.010976476533683352,0.0005397631938349183,0.0,0.000566265717591107,0.0003827175770106249,0.00029354707647623947,0.0005766798739290567,0.0005032931048099968,0.0004600587442811226,0.0,0.019735332337989055,8.296726540244165,0.016092334452993923,0.0,0.0007916330417745252,0.00016776440916515647,5.239592272911768e-05,0.0,5.073505587583819e-05,0.00038089434820296435,0.0006080850238795157,0.00018875528009219318,0.0029518958958282453,0.01593811881399053,0.003513494780728781,0.0001415663987264086,0.0003773481246187217,0.0,0.0,0.0,0.00038255514144496026,0.0011061709891778014,0.00041286997762625486,0.0012897187617018659}, + {0.0,0.00044225659147129916,0.0,9.437761550900206e-05,4.718880775450103e-05,0.00044225659147129916,0.0005397631938349183,0.0032385787201149553,0.006174475528583623,0.0001415663987264086,0.0005714727344173456,0.00034073583515655155,0.00022016030735717962,0.0004561043461296849,0.00047188807754501035,0.0,0.00044225659147129916,0.0,0.01661914587215109,8.320310368633681,0.014545356523888548,0.00069204838490219,0.0002777633450609139,2.619796136455884e-05,2.453709451127936e-05,0.0,0.0001503197618223624,0.0009174158317710807,0.00044225659147129916,0.0005019278608713893,0.0010038557462798729,0.014341784519275718,0.0018162148791945635,0.00038255514144496026,0.0,0.0,0.0,0.00046840393280988125,0.0016313205109237203,0.00037751043749891395,0.0015303209224963922}, + {0.0,0.0035380527317703933,0.000278629259126217,0.000278629259126217,0.0,0.0,0.0,0.0,0.012860553734913316,0.007745402888786731,0.0004508972066179738,0.0008596503585016819,0.0004351134752026481,0.0006500666430481165,0.0006606432349517311,0.0004600587442811226,0.0,0.0005019278608713893,0.0005527070019315085,0.00932250215025209,8.821056032291517,0.0012891703576395385,0.00027444163589144947,0.0,0.0,0.0,0.0003442821814262667,0.00055568900300202,0.00037300689917231354,0.0008676089976180655,0.0,0.002047656036007747,0.007413611971688711,0.0004438668382986019,0.0,0.0,0.0,0.00035469633776421644,0.0010695588224011038,0.0008729287219073773,0.001074765961912815}, + {0.0,0.0,0.0,9.265944374095573e-05,0.0,0.00043420518239934704,0.0,0.0,0.0,0.0037878861374731855,0.0005353479604812484,0.0003345326407955769,0.00038597465651717057,0.0002675942410510024,0.00039635881896020426,0.000138989141521044,0.0,0.0004927901190933841,0.0,0.0004927901190933841,0.0,9.774652699934077,0.0001475831471118753,0.0,0.0,2.5721019905991684e-05,7.205074177646956e-05,0.0006280074283125938,0.0001853189356626907,0.00043420518239934704,0.0009269952936633548,0.000985580262277158,0.003977626864149491,0.00020250694684435328,0.0,0.0,0.0,0.0004219204086677317,0.0008184385855552314,0.0005515350478942232,0.0007927175174684605}, + {0.0,0.0,0.00035902377404061457,0.0,0.00035902377404061457,0.0,0.0,0.0,0.0,0.00018531889591354785,0.0003243080771837347,0.00016982255163971001,0.00024187329341617957,0.00042207976659502716,0.0003036993511288589,0.000138989141521044,0.0,0.0,0.0,0.0,0.0,0.0006743370941729157,11.00938393823936,7.716305971797505e-05,0.0,2.409038961381198e-05,5.144203981198337e-05,0.0004992428504033917,0.000138989141521044,0.0,0.0,0.0,9.265944374095573e-05,0.00012860509952995842,0.0,0.0,0.0,0.00021800333086733397,0.0006588407179793117,0.000277978283042088,0.0007831836572466127}, + {3.3362229689183726e-05,9.806605150808486e-05,8.538331658524414e-05,6.318858527590927e-05,0.00010757804548554008,0.0001431637970569877,6.672446347373367e-05,3.3362229689183726e-05,3.3362229689183726e-05,0.00018016623439881584,0.00011838046364694743,0.00015584807015120528,0.000572800711044491,0.00010364503402295535,4.6329721870477866e-05,2.689451096485969e-05,8.937479301438262e-05,3.3362229689183726e-05,3.203627862473041e-05,9.876073402818357e-05,3.558576867562427e-05,0.0002169131202853609,4.9811409519803656e-05,11.816336105574775,0.0,0.0,5.144203981198337e-05,0.00010951830636344948,2.689451096485969e-05,6.24802828324606e-05,3.3362229689183726e-05,5.378902114678173e-05,0.0006632774372051108,0.0001234927574980633,0.0,0.0,0.0,0.00011299999798768957,0.0011437449925749523,0.00020236095125391695,0.00038492033278634554}, + {0.0003049100455786673,0.00023171786922252907,0.00020236095125391695,3.15942922464858e-05,6.318858527590927e-05,0.00022302665108022942,0.0002068439716062941,9.699280056039995e-05,0.00020329449360059502,0.00020236095125391695,0.0008738633371103521,0.00014111258891355346,3.15942922464858e-05,0.0005921827225404653,0.00020430119906279,0.00011227782755010385,0.0003028894244006659,0.00023045532382263544,0.00031992076734703353,0.00016681113248603546,0.0001670140861891552,0.0007933310111597425,8.727897808169788e-05,0.0,11.876562079609306,0.0,5.7315312152477494e-05,0.00021903656767787038,0.00018016623439881584,0.00039955263428302157,0.00043856192153162837,0.0002003762723349597,0.00021646025288038747,0.0002094135332653085,0.0,0.0,0.0,8.303633205846918e-05,0.0012162951823314926,0.00048670957647353334,0.00047595333796291437}, + {0.0,3.558576867562427e-05,0.0,3.15942922464858e-05,5.848880321134551e-05,0.0,6.672446347373367e-05,9.743478693864453e-05,3.3362229689183726e-05,0.0,6.318858527590927e-05,7.792401411696368e-05,0.00010364503402295535,7.792401411696368e-05,0.0002169131202853609,0.0,6.24802828324606e-05,0.00019884740767788534,0.00016239126870358937,9.876073402818357e-05,5.378902114678173e-05,0.00014997472054078647,0.00012425377290596363,0.0,2.409038961381198e-05,11.78020052115406,4.9811409519803656e-05,0.00019630451468243318,7.792401411696368e-05,8.937479301438262e-05,0.0001356724893015858,0.00016783476506049256,9.008309864980791e-05,0.00012050386285867766,0.0,0.0,0.0,5.144203981198337e-05,0.00038492033278634554,0.00020023751169078412,0.0006422898976029345}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,4.6329721870477866e-05,0.0005404603025131433,0.00038434409849615975,0.0002830906250739831,0.0001853189356626907,0.00023164860935238934,0.0,0.0,0.0,0.0,0.0,0.0003036993511288589,0.00011838046364694743,0.0,0.0,0.0,10.901025365756432,0.0003345326407955769,9.265944374095573e-05,0.0,0.0,0.0,0.0,0.0001234927574980633,0.0,0.0,0.0,0.00012186219947705245,0.0005404603025131433,0.000138989141521044,0.0006073987022577178}, + {0.00043420518239934704,0.0,4.6329721870477866e-05,9.265944374095573e-05,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,0.00037575009290532845,0.0004065833825720464,0.0001234927574980633,0.0003808624349372236,0.000442688492649903,0.004647693824140788,0.0,0.0005299366488848691,0.0,0.0,0.00035902377404061457,0.0005249639184901628,0.0003498696668912622,0.0,4.8180779227623964e-05,2.409038961381198e-05,0.00019902516283346907,9.679090942414009,0.003240772912512344,0.0,0.0005299366488848691,0.0,0.0,0.00036536605091424287,0.0,0.0,0.0,0.0004511231403134388,0.0013338680096440395,0.0006861026393055481,0.0009882610167429933}, + {0.0,0.0,0.0,4.6329721870477866e-05,0.0,0.00043420518239934704,0.0,0.0005299366488848691,0.0,0.0,0.0005353479604812484,0.0003602537088823478,0.0003602537088823478,0.00035514136685045264,0.000885376985299806,0.0009596594529407224,0.0074060204707583595,0.0008684103569693176,0.0,0.0,0.00043420518239934704,0.0004941305083714967,0.00028293126714668774,4.9811409519803656e-05,0.0,0.0,0.00037396005650507417,0.002490612634172007,8.268124049849925,0.008424793411370625,0.0,0.0,0.00045168324187195994,0.0004990834924760965,0.0,0.0,0.0,0.0003208873623105215,0.00456510746966438,0.000637002169705274,0.0015089629839546285}, + {0.0,0.0,0.0006789102932852536,4.6329721870477866e-05,0.0,0.0,0.0,0.0004927901190933841,0.0,0.00031988651924463906,0.0008133262435233364,0.000612511044289613,0.00046825008235743036,0.00035514136685045264,0.0005559566865361242,0.00041254587445341306,0.0013026155471980412,0.015266128079051878,0.0025010967717319383,0.0004927901190933841,0.00035902377404061457,0.0012199096260953827,0.0003964197676459272,7.390179913361565e-05,2.409038961381198e-05,2.5721019905991684e-05,0.00034475732485936706,0.0010190944268616596,0.008637553709842406,7.00945298686592,0.009411233435562709,0.00043420518239934704,0.0006441944838058024,0.0006605323451379935,0.0,0.0,0.0,0.0005164308615850545,0.012165574483806207,0.005716857758933976,0.0016368769302065665}, + {0.0,0.0,0.00031988651924463906,4.6329721870477866e-05,0.00035902377404061457,0.0,0.0,0.0005299366488848691,0.0,0.0003662162007637143,0.0006537283759474164,0.0009778769747519078,0.0003345326407955769,0.0004992428504033917,0.0006743371020022925,0.0004053535603528847,0.00043420518239934704,0.0019711603137634068,0.01379811996196021,0.0004927901190933841,0.0,0.0010809204845743387,0.0002727065830828975,2.409038961381198e-05,2.5721019905991684e-05,2.5721019905991684e-05,0.00020576818333832306,0.0010919953184876003,0.0005906723833930041,0.012276197552912831,6.414133687768359,0.007899669894049268,0.0006789102932852536,0.0005350291241747095,0.0,0.0,0.0,0.00046661952433641954,0.0021575786565143054,0.019253448915981967,0.0023453909475020258}, + {0.0,0.0,0.0006789102932852536,0.000138989141521044,4.6329721870477866e-05,0.0,0.0,0.0,0.0,0.0,0.0006280074283125938,0.0004888588084123062,0.0006123515659103697,0.0006382319919244358,0.000746387843778762,0.00031988651924463906,0.0,0.0,0.0019711603137634068,0.01877424288578402,0.00043420518239934704,0.0009110980533865767,0.0004221408357326981,5.144203981198337e-05,0.0,2.5721019905991684e-05,0.00024187329341617957,0.000921322616998419,0.0005906723833930041,0.00035902377404061457,0.0068060023411666256,7.184240808708931,0.00874910104288215,0.000624427235060137,0.0,0.0,0.0,0.000417028493700803,0.0025289078437278375,0.007060293345106906,0.011245743501574494}, + {0.0,0.0,0.0,9.265944374095573e-05,0.000273556732932369,0.0,0.0,0.0,0.0,0.0013677836646618447,0.0005147392344263725,0.0005404603025131433,0.00047352178231662085,0.0003036993511288589,0.0006537283759474164,0.0005471134977845042,0.0,0.0004927901190933841,0.0,0.00043420518239934704,0.01085249278854668,0.003104664620233268,0.00019554349927453288,0.0,0.0,2.5721019905991684e-05,0.00032763026236342746,0.0009984857008067834,0.00023164860935238934,0.0,0.0,0.008537701453932118,8.149563197365548,0.0004735828514542919,0.0,0.0,0.0,0.0004580253982936402,0.0010500871949076208,0.00046329721870477867,0.006038276555239378}, + {0.00047233266738838073,0.000641749761443209,0.00018986129957423954,0.00041385720529675676,0.00027061044494412886,0.00019405688534897668,0.00039222929466012867,0.00012394790353404482,0.0007293983154380112,0.0005522663099359907,0.0008947588293912244,0.0004876796154626394,0.00023105620837489895,0.000349466356181252,0.0003579443222902579,0.00018385540374335615,0.0002162701686215892,0.0003359876145535784,0.00041391277277860706,0.00029619529441360127,0.00038811376069272804,0.0008004574263073203,0.00028067196653206345,0.0,0.0,0.0,0.0002576739457352252,0.0012773039895551477,0.0005917067032040043,0.00025890398274174074,0.0005826550936615541,0.0012610562633540525,0.0010465171526296618,13.161476704187892,0.0,0.0,0.0,0.00035760168180660475,0.0014920369038017986,0.001072029553493365,0.0015235204231030014}, + {0.0037401763971345076,0.0042849592734364806,0.004111811923550183,0.005092063963608309,0.004767411743619592,0.005303951445664193,0.004590331570571866,0.0037178723410708717,0.004845587448077882,0.005451804046817913,0.003706119018241511,0.0036555274735533393,0.0032942742924307465,0.0024149708654467436,0.004354165154911793,0.004387701130730978,0.005356106376066794,0.006316460639826233,0.006234653300272266,0.005731085794995885,0.005784479326108193,0.006210825571542172,0.0030116517148775592,0.00020187300811567337,0.00040374607857159646,0.00020187300811567337,0.005577169519374647,0.005647843352108025,0.008755318549596231,0.0083559857889723,0.009045162637069785,0.009155868145716761,0.007056639100617495,0.0035178345321636374,15.361948985459994,0.0,0.0,0.005360708779688191,0.01289557301967356,0.018121648709836548,0.014743927560069476}, + {0.008360183365786865,0.008375684899978881,0.006809439230389469,0.007839383276117596,0.00664958497671534,0.00792483908263466,0.008565045740494319,0.008897430098619232,0.008667909823159905,0.00795235150493964,0.008415168497348847,0.004805649667355222,0.00306832695987643,0.004642650694417376,0.006719940181505699,0.010200734961837021,0.009512857661663756,0.010842858313004156,0.010381396905476969,0.011950093493528664,0.010941751598830273,0.009811528520487995,0.0043631940779907735,0.0006863683351879427,0.0005248699513226057,0.0006056190866872698,0.004479074496945073,0.009489889774296515,0.012754129919750442,0.015588509384344192,0.018198596588443108,0.015075978305502459,0.014164537687065451,0.009579499750343156,4.037460785715964e-05,15.392654252162206,0.0,0.010874080465036155,0.023273215056464912,0.03339096062295365,0.023471210768110477}, + {0.0039944465213658875,0.0044587567012898096,0.005211182997017262,0.0038878257151998452,0.003643733621865333,0.0038142103462388793,0.005630645547417421,0.0049254491561343755,0.004957639813971923,0.004233697116980505,0.004397730984241687,0.0031275318259787743,0.002543314308643682,0.0022608345749219544,0.006075635999084117,0.005679361350954752,0.006131751867331138,0.005669028262155276,0.006687246591779442,0.006128363536224898,0.005559944007906391,0.006890967962901472,0.0038297753982186656,0.00040374607857159646,0.00032299684007614887,0.00040374607857159646,0.003916811722474344,0.003710291458851682,0.0070254658972260155,0.008560261703552743,0.008935905577187936,0.009267123172120539,0.007761904350939337,0.005137776968154126,4.037460785715964e-05,0.0,15.392654252162206,0.00447681331603543,0.013477398418485614,0.01814984705190398,0.013167715554757127}, + {0.0002051634550246243,0.00020006278117986007,0.00021822411215235868,0.0002430604776465327,0.0002465869347357031,0.0007378245622287297,0.0003495953874144189,0.0010484892594924487,0.00025864476043890904,0.00019667994756008764,0.0010791169472172308,0.0008350676554667646,0.0005092237800549104,0.0009193596672648896,0.0007912107510449613,0.00020268585339619627,0.0006983316700044909,0.0010521430138322845,0.0002462013487466864,0.00029335381043865216,0.0002700105932079221,0.0008144959887649199,0.00023884335216106783,6.573820893273025e-05,7.324371232352478e-05,4.037460785715964e-05,0.00019818704233791684,0.0009394393847368353,0.0006539699896540006,0.0015686915623500791,0.00047775626911413015,0.0004074854668648332,0.00035727334648618097,0.00045891719957490883,0.0,0.0,0.0,13.299756613662193,0.002140200804282334,0.000677556615544216,0.0018724594369547993}, + {0.0,0.0,0.0005180046735995988,0.00011841027094758708,0.0,0.0005548744004819432,0.0,0.0,0.0012320846813054858,5.920513547379354e-05,0.0013353820233192064,0.0009864805775490083,0.0008923224800761921,0.0015127937541395224,0.001508229822148531,0.00017761537563607213,0.0,0.0006297405765274397,0.0,0.0006297405765274397,0.0,0.001473391483858295,0.0004932402118112329,6.573820893273025e-05,3.078530850432441e-05,3.078530850432441e-05,0.0005086719634051957,0.0012759731506737308,0.005539732013660129,0.011705984160421387,0.0018143552456837376,0.000458799455775105,0.0006364148722017111,0.0008855857310161908,0.0,0.0,0.0,0.0010543805000596041,7.396162671836815,0.011487336124565697,0.002729765629652375}, + {0.0,0.0,5.920513547379354e-05,0.00011841027094758708,0.0008083799123148994,0.0,0.0011846149670041578,0.0,0.0,0.00017761537563607213,0.0012498408876232927,0.0017824832157892104,0.0011904320149778175,0.001249637088880994,0.0012761769494160295,0.0002960256773689677,0.002123422811147477,0.0,0.0006934503006922863,0.0,0.0,0.0018943601054247756,0.0006949041468916282,0.00012522502997933834,0.0,3.078530850432441e-05,0.0007825291401201995,0.0024468055450657276,0.00041443597910186333,0.005505593777154346,0.01615405189474541,0.006978067397039585,0.0006456060931182285,0.0008156799917299961,3.078530850432441e-05,0.0,0.0,0.0010939864151565874,0.014989071479647,3.816559365330012,0.015390785991841334}, + {0.0,0.000458799455775105,0.0008083799123148994,0.00011841027094758708,5.920513547379354e-05,0.000458799455775105,0.0006297405765274397,0.0006772104347500849,0.0,0.0005864010192150518,0.0011577666476831339,0.0012957761082222229,0.0006181836177883739,0.0009932173266090096,0.00110509452409766,0.0006456060931182285,0.0,0.0,0.0,0.0,0.0005548744004819432,0.0012498408876232927,0.0005063064202997234,6.365441297068953e-05,3.2869104466365124e-05,0.00012522502997933834,0.0006730174857370214,0.0013878503481623815,0.00017761537563607213,0.0005548744004819432,0.000458799455775105,0.012999451986211956,0.005880121683356256,0.0010898188540178144,0.0,0.0,0.0,0.0006487652814769421,0.002545617149772058,0.010628942179170086,7.867539619327903} + }; +} + + +static std::vector> TransmittanceBackVisible(){ +return { + {8.2226559597368,0.005157735858805399,0.003535251852226616,0.007490202428640399,0.003877608639684264,0.006014320024130198,0.003263964564364444,0.003784696604173629,0.0048647897688351835,0.00010006013973580313,0.0,0.0,0.0,0.0,0.0,0.0,0.0001278354936774472,0.00028344628926756755,0.00015561084761909127,0.00023893693545850892,0.00015561084761909127,0.00020564086545802194,5.0030069867901565e-05,0.0,0.00046888508575931604,0.0,0.00010006013973580313,0.0005613720445776904,0.0001593705911288208,0.0,0.0010474277228590286,5.378983939211655e-05,0.00011110141576657627,0.0001055807777511897,0.0009115824295950596,0.00010006013973580313,0.000605881398386749,0.00019202163196256332,0.0007847076859848537,0.003795808607086721,0.005591264312697046}, + {0.007493232675906897,8.08960884647479,0.012634563568791453,0.0,0.0,0.0,0.0,0.00010784870269568685,0.00844504628541862,0.004178769772829452,0.002526912731983915,0.0,0.0,0.0,0.0,0.0,0.00010784870269568685,0.000473232825254246,0.0003473475959681791,0.0003893711192571966,0.0002456347320011575,0.0007557448651841827,0.00010784870269568685,0.0,0.0005735710565461066,0.0,0.00016177302600410806,0.0003774704874743263,0.00014968677324602987,3.6773406938399416e-05,7.354681478808005e-05,5.987470929841195e-05,0.0002915253122079685,8.791413153525078e-05,0.000760891220741532,0.000798572456058076,0.0002755721427292079,0.0005995062603411819,0.001549259392909832,0.0032337766616487166,0.0010664288325476373}, + {0.0049575744481273115,0.007211732389459387,7.688382939890081,0.015258731127931965,0.0,0.0,0.0,0.0,5.3924351347843425e-05,0.0,0.0030322952783806982,0.007099032046563627,0.0006168068551427215,0.0,0.0,0.00010784870269568685,0.0003774704874743263,0.00038342073326720584,0.000473232825254246,0.0004791832112442368,0.00046133219347137565,0.00022164770726309778,0.0002156974614702182,0.0004178769772829452,0.0,0.0005735710565461066,5.3924351347843425e-05,0.00026962175673921713,0.00011379906064625538,9.475018382444422e-05,0.00013835964767854175,2.9937354649205976e-05,0.00025563751548992735,0.00012658547088601735,0.00046133219347137565,0.0004262484271859758,0.000491269464002315,0.00030519733449065116,0.0019467069873481278,0.0035348924797005956,0.001397389489175052}, + {0.008029994602379393,0.0004178769772829452,0.010226301053973834,7.852930887315859,0.008419116829705104,0.0,5.3924351347843425e-05,0.00016177302600410806,0.0,0.0,0.0,0.0006168068551427215,0.009355641944242193,0.0018504209222298127,0.0,5.3924351347843425e-05,0.0004313947827433254,0.0005212068747303655,0.00019766082272214925,0.00019766082272214925,0.0002156974614702182,0.00041335814399525627,5.3924351347843425e-05,0.0,0.0,0.0,0.00010784870269568685,0.00040740775800526553,8.981206394761793e-05,3.6773406938399416e-05,7.354681478808005e-05,5.7976776886044796e-05,0.00014968677324602987,0.00028747277451207827,0.0007010165394825425,5.3924351347843425e-05,0.0006231052194754838,0.0013749761118183783,0.0011399756762864206,0.006628974966271925,0.00230570692601527}, + {0.0005735710565461066,0.0,0.0,0.010053358103530348,7.744315979368128,0.011254792669505529,0.0,0.00016177302600410806,5.3924351347843425e-05,5.3924351347843425e-05,0.0010789535938300777,0.0,0.0018504209222298127,0.004675039878521607,0.005326578943776679,0.0,0.00026962175673921713,0.00028747277451207827,0.000419308529985247,0.0003235460520082161,0.00026962175673921713,0.00040740775800526553,0.0002156974614702182,0.0,0.0,0.0,5.3924351347843425e-05,0.0005511441452613047,0.0001677234119940988,6.671076158760539e-05,0.00013835964767854175,0.0,0.00017177580949287794,0.00014677656161206837,0.000491269464002315,0.00026962175673921713,0.000491269464002315,0.0014790893367910309,0.0024295374264398212,0.0034982501000710283,0.0026086280202087344}, + {0.005977085036716547,0.0,0.0,0.0,0.013139946115188239,8.426670741183832,0.007609292050458507,0.0,0.0,5.3924351347843425e-05,0.0,0.000505382546396783,0.0,0.0,0.0030322952783806982,0.005102029436706294,0.0012679528048940916,0.0003893711192571966,0.00019171043673215851,0.00035943384872625734,0.00010784870269568685,0.00019171043673215851,0.00010784870269568685,0.000505382546396783,0.0,0.0,0.00010784870269568685,0.0005152564887403747,0.00011379906064625538,5.7976776886044796e-05,0.00011032022544170289,2.9937354649205976e-05,0.00019981523172971677,2.9937354649205976e-05,0.00041335814399525627,0.00016177302600410806,0.00040740775800526553,0.0003370325935128021,0.0016508451892251318,0.0024636879496250565,0.0018434462070765214}, + {0.0016715084699202255,0.0,0.0,0.0,0.0,0.006168678408860867,8.53278873858137,0.003098508972021881,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00010784870269568685,0.003974198354102812,0.0015551210341284431,0.0002515851179911482,0.00020361106851502883,0.0002156974614702182,0.00013778605734489284,5.3924351347843425e-05,0.0,0.0,0.0005735710565461066,5.3924351347843425e-05,0.0002456347320011575,0.00019576283423093763,9.664811623681137e-05,0.0,0.0,8.981206394761793e-05,0.0011084500846434537,0.0002995591674672676,0.00010784870269568685,0.00038342073326720584,0.0011202242586320359,0.0017260661757375546,0.0025789146444643563,0.0016595790977295625}, + {0.004178769772829452,0.0,0.0,0.0,0.000505382546396783,0.0,0.004437628316948836,8.575379218988017,0.0037013513137518135,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00010784870269568685,0.00022759809325308854,8.981206394761793e-05,0.00014373638725603913,0.0002156974614702182,0.0003774704874743263,5.3924351347843425e-05,0.0,0.0,0.0,0.0,0.0002995591674672676,0.00017367379798408956,2.9937354649205976e-05,0.0,0.0,5.987470929841195e-05,0.0001777261954828687,0.000491269464002315,5.3924351347843425e-05,0.00032949643799820685,0.00016335892661301145,0.0025327982067114277,0.003581349133783235,0.0013286187404229805}, + {0.0029251387919116273,0.0060692006092994775,0.0,0.0,0.0005735710565461066,0.0,0.0008357539917181249,0.004491552331823613,8.521376693730977,0.0,0.0,0.0006168068551427215,0.0006168068551427215,0.0,0.0,0.0,0.0002156974614702182,0.00013778605734489284,0.000257535503981139,0.00019171043673215851,0.0030273701538647974,0.000653042490006423,5.3924351347843425e-05,0.0,0.000505382546396783,0.0,5.3924351347843425e-05,0.0002515851179911482,5.987470929841195e-05,6.671076158760539e-05,7.354681478808005e-05,0.0,5.987470929841195e-05,0.00023253625610032938,0.00041146015550404464,0.0004262484271859758,0.00038342073326720584,0.00012747116522464228,0.0007635075701176394,0.0023582738328537835,0.001549259392909832}, + {0.0,0.004464748860742059,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.76651112725417,0.004022492269270758,0.0,0.0,0.0005397631938349183,0.0,4.718880775450103e-05,0.0002149531678454685,0.00036172670608358823,0.0002725562055492028,0.0001519806777498309,0.0028677005365769673,0.0019112657741741344,0.001288620726722486,0.0,0.0,0.0,4.718880775450103e-05,0.0005924636053443824,0.00023578160320684053,0.0009557630085261152,9.654042709240541e-05,2.453709451127936e-05,9.958473048361872e-05,0.000351374628594752,0.0008029132348632505,9.437761550900206e-05,0.00017297154867686762,0.0011094045617172088,0.002409514383603388,0.005575706546317119,0.0018966302990363795}, + {0.0,0.002211282957356496,0.009526072928010196,0.0,0.0,0.000365681104235026,0.0,0.0,0.0,0.006416918873204718,6.014546102006777,0.007051547512499174,0.0005019278608713893,0.0,0.0,9.437761550900206e-05,0.0002831327974528172,0.0005032931048099968,0.00034073583515655155,0.00030933080789156503,0.00033032167881860176,0.00042469919617922576,0.0044542727482404666,0.0005019278608713893,0.0,0.0,9.437761550900206e-05,0.00019916943643014294,0.00022536744686889077,2.453709451127936e-05,0.0018302721008945184,5.073505587583819e-05,0.00022016030735717962,0.00037785003088694984,0.0005924636053443824,0.0001415663987264086,0.0006710575139751534,0.0005603499467899102,0.002286971305940714,0.003383094765912479,0.004979929617355322}, + {0.0,0.00044225659147129916,0.004630856402600339,0.0037783419648643435,0.0,0.00044225659147129916,0.0,0.000278629259126217,0.0,4.718880775450103e-05,0.005222850533581163,5.633789284218549,0.012338882837056262,0.0,0.0,4.718880775450103e-05,0.00037751043749891395,0.00044032061471435923,0.00039313173334857464,0.00044032061471435923,9.437761550900206e-05,0.0003827175770106249,0.001073268340349319,0.00811507466926743,0.0005397631938349183,0.0,0.0004600587442811226,0.0006186616157831301,0.00018338570501481735,9.980924489839691e-05,0.0002912292123548817,7.693301724039703e-05,0.00031808417098751885,0.00032849845001094115,0.0006500666430481165,0.0,0.0004561043461296849,0.0004023871253982292,0.002025350669987825,0.005835031737078478,0.0027011340713057664}, + {0.0,0.0,0.0,0.0071334154485904995,0.0020615464852105823,0.0008079376957063251,0.0,0.00032581813251744587,0.0,0.0,0.00044225659147129916,0.012916485244396207,5.693371483965564,0.012338882837056262,0.0,0.0,0.0002149531678454685,0.0004351134752026481,0.0005661032820254423,0.0003355286956448404,0.00019396229691843176,0.0004561043461296849,0.00042019565785262567,0.0,0.009261713050571625,0.0023902970109277114,0.0001415663987264086,0.0004561043461296849,0.0002515653346221661,2.453709451127936e-05,0.00019308083430976427,2.453709451127936e-05,0.000384440571787207,0.00013531115722264814,0.0007609316077200939,0.00041286997762625486,0.000429906335690937,0.00047793670873843007,0.0012550257637723677,0.007526340131801315,0.003220195449161547}, + {0.0,0.0,0.00044225659147129916,0.002159052071125061,0.002007711277860169,0.0,0.000365681104235026,4.718880775450103e-05,0.0,4.718880775450103e-05,0.0,0.0,0.010757427676961976,5.8397205304686395,0.006991876899466362,9.437761550900206e-05,0.00037751043749891395,0.0004875093733946713,0.0004245368832990337,0.00044032061471435923,0.00037751043749891395,0.0006403559652098052,9.437761550900206e-05,0.00044225659147129916,0.0010038557462798729,0.01018245770726958,4.718880775450103e-05,0.0005714727344173456,0.0002095837154535652,5.837810237915378e-05,0.0001854378569397125,5.239592272911768e-05,0.00037214098510701053,0.00033802681723703375,0.00069204838490219,0.00033032167881860176,0.00069204838490219,0.001168007158452066,0.0037974404123771997,0.006210836644077828,0.0016013643193440678}, + {0.0,0.0,0.00044225659147129916,0.0,0.009441844443681327,0.002211282957356496,0.0,0.0,0.000278629259126217,0.0001415663987264086,0.0,0.0,0.0005397631938349183,0.006766469334447945,5.843305399976736,0.006706024735574416,0.00028833993696452835,0.0005137073838334191,0.0002725562055492028,0.00029875421598795065,0.0002831327974528172,0.0005459783576753589,4.718880775450103e-05,0.0,0.0,0.0012501944098630968,0.008356898777368619,0.0007864260249482866,0.00027610242913344543,5.073505587583819e-05,0.00020997495145099184,2.619796136455884e-05,0.00026734906603749167,0.00018416083183042865,0.0005137073838334191,0.00018875528009219318,0.0003565195665718771,0.00026352974459133843,0.0015166463997252563,0.005223723152407543,0.004624482812555478}, + {0.0,0.0,0.0,0.0,0.0,0.005840422211626103,0.0,0.00037300689917231354,0.0,4.718880775450103e-05,0.0,0.0005397631938349183,0.0,0.0,0.005119535950032254,6.790321923767917,0.002186349509023302,0.00017297154867686762,0.00019396229691843176,0.00022016030735717962,0.0003827175770106249,0.0005714727344173456,9.437761550900206e-05,0.0,0.0,0.0,0.0,0.0021226732950570815,0.00020437657594185403,8.889738058908984e-05,6.436028282664546e-05,7.527215038711756e-05,9.958473048361872e-05,0.00015718781726154204,0.0008319538677011301,0.00037300689917231354,0.0003565195665718771,0.0002687368841030496,0.0026194893430289356,0.004318500336580922,0.0036303612813218264}, + {0.0,0.00044225659147129916,0.0,0.0,0.0,0.0,0.00278629259126217,4.718880775450103e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.003858124407413326,7.317151745745967,0.0006245722337944798,0.00017297154867686762,0.00036172670608358823,0.00016776440916515647,0.00016776440916515647,0.0,0.0,0.0,0.0,9.437761550900206e-05,0.00024115117828421632,7.338676911905987e-05,2.619796136455884e-05,0.00015325770285911473,2.453709451127936e-05,7.859388409367652e-05,0.0002149531678454685,0.0006403559652098052,0.0001415663987264086,0.0002604811332837845,0.00015630193797586253,0.0005470623985363116,0.002614950385406408,0.0008366836625762189}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.00018875523960598724,0.00018875523960598724,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0005924635973698266,7.435164128652691,0.00012578266731108306,0.00024115117828421632,4.718880775450103e-05,0.00030933080789156503,0.0,0.0,0.0,0.0,0.0,0.0002149531678454685,7.859388409367652e-05,2.619796136455884e-05,8.889738058908984e-05,0.0,0.00012578266731108306,0.00015630193797586253,0.00017297154867686762,0.0,0.00023594403877250517,0.00010479184545823536,0.0012208472522794542,0.0025505904084959885,0.0006757829743724966}, + {0.0,0.000278629259126217,0.0,0.0,0.0,0.0,0.00018875523960598724,0.0009909649057957771,0.000365681104235026,0.0,0.0,0.0,0.0,0.0,0.0,0.0001415663987264086,7.338676911905987e-05,2.619796136455884e-05,8.060634297420814,2.619796136455884e-05,4.718880775450103e-05,0.00018875528009219318,0.00023594403877250517,0.0,0.0,0.0,9.437761550900206e-05,0.0002149531678454685,7.527215038711756e-05,3.218014101459494e-05,0.0,0.0,0.00012578266731108306,0.00013697195046464408,0.0001415663987264086,9.437761550900206e-05,7.338676911905987e-05,0.00015796282139168082,0.0003218014101459494,0.0009332241168434564,0.0014461083872789559}, + {0.0,0.0,0.0,0.0,0.0,0.0008845131749680427,0.0,0.00018875523960598724,0.000278629259126217,0.0,0.0,0.0,0.0,0.0,0.0,0.000278629259126217,0.0002831327974528172,0.0003145379474032762,4.718880775450103e-05,7.521426738116545,0.0005145732978987223,9.958473048361872e-05,0.0,0.0011736188324530015,0.0,0.0,4.718880775450103e-05,0.00023594403877250517,2.619796136455884e-05,5.073505587583819e-05,3.218014101459494e-05,5.239592272911768e-05,0.0002725562055492028,0.00017131063274939908,0.00022016030735717962,0.0,0.00017297154867686762,0.00019967145740928794,0.0013173879365819528,0.001548826719431242,0.00038616171830714493}, + {0.0,0.0,0.0,0.0,0.0,0.000365681104235026,0.0,4.718880775450103e-05,0.0036221806140117655,0.002507663988503231,0.0,0.0,0.0,0.0,0.0,0.000278629259126217,0.0002831327974528172,0.00012057557687356091,0.00012057557687356091,0.0007812188449503695,6.8535957293841525,0.00033032167881860176,0.000365681104235026,0.0,0.0,0.000365681104235026,4.718880775450103e-05,0.0005924636053443824,0.00019916943643014294,0.0,0.0009955862142014757,7.527215038711756e-05,0.0001519806777498309,5.239592272911768e-05,0.00023594403877250517,9.437761550900206e-05,0.0004037084479376616,0.00011509534195364869,0.0014782887069849416,0.00248622968933846,0.000611422706697507}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,9.265944374095573e-05,0.0,0.003006353263936444,0.0008206702307168732,0.0,0.0,0.0,0.0,4.6329721870477866e-05,0.00011838046364694743,0.0002573696774391603,5.144203981198337e-05,0.0003139240351926491,0.0002573696376900174,5.931657387180336,0.0015531026003245353,0.0,0.0,0.0,9.265944374095573e-05,0.000478634124348516,0.0002453549569751158,2.409038961381198e-05,0.0009142726771005084,0.0,0.00015106481067081147,0.00027346747803884977,0.000442688492649903,0.0006861026393055481,0.000637002169705274,0.00029032641449838764,0.0008846401969944803,0.002342080927969088,0.0024033078576920722}, + {0.0,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,0.0007180475800009955,0.0,0.0006789102932852536,0.0067631539696800195,0.0008684103569693176,0.0,0.0004927901190933841,0.0,4.6329721870477866e-05,0.0005353479604812484,0.00035002902481855755,0.0005866304978235986,0.0002830906250739831,0.0005353479604812484,0.0025582415849348616,5.099163384256873,0.004249987105723509,0.00043420518239934704,0.0004927901190933841,0.00041254587445341306,0.0004941305083714967,0.00015106481067081147,5.7315312152477494e-05,0.0001820619071575267,4.9811409519803656e-05,0.00023148913097314594,0.00029543874870090615,0.003394408167754949,0.0008642291482451393,0.0007978298595003557,0.0005088225064558956,0.002648558786342238,0.00540280371393118,0.0033195423856583407}, + {0.0,0.0,0.0,0.0,0.000985580262277158,0.00043420518239934704,0.0,4.6329721870477866e-05,0.0005471134977845042,0.0007643773343934993,0.0008684103569693176,0.009704158119032894,0.000985580262277158,0.0004927901190933841,0.0,9.265944374095573e-05,0.0006486160339155214,0.0008594965592857395,0.0005248044401109192,0.00046313774032553527,0.0007206667756919909,0.000586789976202842,0.0031326904941881583,4.34970774981274,0.005545375216839746,0.0,0.000138989141521044,0.0009574277270762753,0.0003002786362556457,0.00013872101548464228,0.0002768447097588101,5.144203981198337e-05,0.0004733624243893255,0.0011521237186148177,0.006135054955728712,0.0026462919589733446,0.0009368190010213996,0.0004678731882119223,0.003590321978476028,0.007964083096996342,0.002563241467005442}, + {0.0,0.0,0.0,0.0,0.00043420518239934704,0.00035902377404061457,0.0,0.0001853189356626907,0.0003662162007637143,0.00031988651924463906,0.0,0.0004927901190933841,0.00940015908345724,0.0004927901190933841,0.0,0.000273556732932369,0.0007470786278715614,0.0003808624349372236,0.0005403008241339001,0.0007256197597965906,0.0007419662936690428,0.0006588407179793117,0.000498012947481425,0.006923172051944571,4.039292238963448,0.005862410688461147,0.00023164860935238934,0.0010139820848297644,0.0004321449722795739,0.0002034882688652719,0.0002452504046841918,9.79921887474276e-05,0.00035846367248209345,0.0002614528780267533,0.001142746662738966,0.007359930815642982,0.000751500185810657,0.00043067801992380706,0.0025887701311729646,0.009073987174987265,0.005280530213209652}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.00035902377404061457,0.000273556732932369,9.265944374095573e-05,0.000138989141521044,0.0,0.0,0.004965047686396521,0.011395429944467966,0.00043420518239934704,0.00035902377404061457,0.0003243080771837347,0.000612511044289613,0.0006792899656549439,0.0004116957246039416,0.0005559566865361242,0.0009110980533865767,0.0,0.0,0.007089844947752405,3.9976062287757066,0.0024898248001378694,0.0009419313430532949,0.0002675942410510024,0.00013872101548464228,0.00012637721246909646,4.9811409519803656e-05,0.00045297412539941614,0.00034823898841830327,0.0009574277270762753,0.002073097273697109,0.006009911404282361,0.0006760329449791566,0.0026519591448362274,0.00837273520564089,0.0036926085682567945}, + {0.0004927901190933841,0.0,0.00043420518239934704,0.0005299366488848691,0.0,0.00035902377404061457,0.0,0.00045168324187195994,0.0,0.0004053535603528847,0.0,0.0,0.0,0.0008684103569693176,0.006687972681773235,0.00031988651924463906,0.0003036993511288589,0.0002882029671058782,0.000375590614526085,0.00045291317671369326,0.00021103988329751358,0.0005506848661249856,0.000138989141521044,0.00043420518239934704,0.0,0.005686082364496097,4.826199997620692,0.002300181639539499,0.0002453549569751158,0.0,0.00021365613152933978,0.00010125344933178703,0.0003431266463864081,0.00027694926204973404,0.0007882959673587413,0.0005443427097033054,0.00393640941203974,0.0004863626826924712,0.0018997608978283285,0.007022207565353185,0.003281883084094548}, + {0.0,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,0.00031988651924463906,0.0,0.0,0.00043420518239934704,0.0009641417108322682,0.0,0.0,0.000273556732932369,0.002016399337221522,0.0003243080771837347,0.0001853189356626907,0.00022126456736130376,0.00035002902481855755,0.00023164860935238934,0.000612511044289613,4.6329721870477866e-05,0.0004927901190933841,0.0,0.0,0.0026445586554406306,5.9661873471332925,5.144203981198337e-05,2.5721019905991684e-05,3.15942922464858e-05,7.716305971797505e-05,0.0001733042151986462,7.716305971797505e-05,0.00039635881896020426,0.000498012947481425,0.00021103988329751358,3.15942922464858e-05,0.0006318858527590927,0.0014849316157953703,0.002656061816481226}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,4.6329721870477866e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,0.00011838046364694743,9.777176168246124e-05,0.00016471020960781492,0.00016471020960781492,9.265944374095573e-05,0.0,0.0,0.0,0.0,0.0,0.00021103988329751358,6.456296687670451,5.144203981198337e-05,0.0,0.0,0.0,0.00019179370967919494,0.0001853189356626907,0.0,0.0002830906250739831,5.7315312152477494e-05,0.00037913153261409454,0.0012952535241320604,0.0023758171095842706}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.000138989141521044,0.0,2.5721019905991684e-05,4.6329721870477866e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9.265944374095573e-05,7.205074177646956e-05,6.913967114073132,3.15942922464858e-05,0.0,4.6329721870477866e-05,0.0,4.6329721870477866e-05,0.0,4.6329721870477866e-05,0.0,9.478288071437169e-05,9.478288071437169e-05,0.00015797143684090952}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.00043420518239934704,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,2.5721019905991684e-05,0.0,0.0,4.6329721870477866e-05,0.0,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,0.0,0.0,7.4439303906679015,0.0,2.5721019905991684e-05,0.0,0.0,0.0,0.0,0.0,9.478288071437169e-05,0.0005053966121489153,3.15942922464858e-05}, + {0.0,0.00035902377404061457,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9.265944374095573e-05,0.0,9.265944374095573e-05,4.6329721870477866e-05,4.6329721870477866e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.5721019905991684e-05,0.0,0.0,7.1187354257905335,0.0,0.0,4.6329721870477866e-05,0.0,2.5721019905991684e-05,3.15942922464858e-05,3.15942922464858e-05,0.0007307721237950108,0.00012637721246909646}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.6329721870477866e-05,4.6329721870477866e-05,0.0005052053422847585,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0001441014835529391,0.00021615222532940864,7.205074177646956e-05,0.000138989141521044,0.00042207976659502716,0.0,0.0,0.0,0.0,0.0,0.00016471020960781492,9.777176168246124e-05,2.5721019905991684e-05,0.0,2.409038961381198e-05,6.564682964101434,8.303633205846918e-05,0.00044337928457207894,0.0,0.00023164860935238934,0.00010288407962396673,0.00028434861739023976,0.0014258463217090543,0.0010783093513344873}, + {0.0,0.0,0.0,0.001354420725578853,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.920513547379354e-05,0.0003288948434059499,0.00018414847988031734,0.0,0.00023682060346579117,0.00023682060346579117,3.2869104466365124e-05,0.0,0.000458799455775105,0.0,0.0,0.00011841027094758708,0.0003946330215533716,0.0,0.0,4.037460785715964e-05,3.078530850432441e-05,6.573820893273025e-05,5.86469824379559,0.0006192700313254914,0.0005271957913853328,0.0003880999173091264,0.0002056925005512711,0.000726742959438279,0.002541093248687347,0.0017336007636806188}, + {0.0,0.0,0.0,0.0,0.0006297405765274397,0.0,0.0002960256773689677,0.00017761537563607213,0.0,5.920513547379354e-05,0.0005548744004819432,0.0,0.0,0.0,0.0,0.0,0.0008824266865787941,0.00030909188585745813,0.0005853144517513916,0.0006906586989223393,0.0011577666476831339,0.001026086492645992,0.0033238389634528747,0.006943714479184948,0.000458799455775105,0.0,0.00017761537563607213,0.0007235277110327788,0.0004011661257976168,9.235592551297323e-05,0.00019228379550044486,9.443972147501396e-05,0.0004890726506724599,0.0006801022627096642,3.366064092597406,0.005268256388411019,0.0008156019509729375,0.0005445971870174021,0.005087430674626154,0.010753100259623609,0.006498035060010251}, + {0.0,0.0010136738562570482,0.0,0.0,0.0006297405765274397,0.0005548744004819432,0.00011841027094758708,0.00017761537563607213,0.0,0.00034958041574926054,0.0005548744004819432,0.0,0.0006772104347500849,0.0,0.0,0.0004679907174821561,0.0008880770321069031,0.0011246938368303957,0.0016244668450327887,0.0012365710343190464,0.0008682740745584115,0.0016640736836890273,0.0010543917266919829,0.0032115961365514452,0.010723329427086753,0.0018351984388065904,0.00011841027094758708,0.0012300379300748008,0.0006972696899971004,0.00013689812529421434,0.00036337145432126006,6.573820893273025e-05,0.00038581241496071257,0.0009085229408235077,0.010122906623407237,1.9642935514886242,0.006867129359261148,0.0010090805242964356,0.006982529627455034,0.014634306102187189,0.006508292724803892}, + {0.0,0.0,0.0011846149670041578,0.0,0.0005548744004819432,0.0,0.0,0.00017761537563607213,5.920513547379354e-05,0.0004087856335737544,0.0011097487909586612,0.0,0.0006934503006922863,0.0006772104347500849,0.0,5.920513547379354e-05,0.00047364105300504004,0.0007235277110327788,0.0008153983061571815,0.0004932402118112329,0.000480174157249285,0.0009340122527058332,0.0009267902140477949,0.0,0.0,0.007013134941956861,0.004550196355969441,0.0011849853650612236,0.0006028299069514695,0.0002292540364150558,0.00022306910400476926,9.860731339909537e-05,0.0002872050707763087,0.0002884592542395496,0.0010787584623049233,0.005049818723960995,3.3976144160180626,0.0006420985689937881,0.003474953167990374,0.007631031286638926,0.005001438072381024}, + {0.0,0.0,0.0006297405765274397,0.0,0.0,0.0,0.0,0.0,5.920513547379354e-05,0.0,0.0,0.0,0.0,0.0,0.000458799455775105,0.0,0.00023682060346579117,0.00024335355378349386,0.00011841027094758708,0.00012494334440652378,0.00021048454167305427,0.00023682060346579117,0.00011841027094758708,0.0,0.0,0.0,0.0,0.0008560906247860574,9.652351743705465e-05,0.0,4.037460785715964e-05,6.365441297068953e-05,0.00022146689262888695,0.00012730882594137906,0.00024335355378349386,5.920513547379354e-05,0.00021048454167305427,5.449198170505275,0.0010146089907881759,0.0018221008293034253,0.0008882414056438656}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.603448674177586,0.0,4.037460785715964e-05}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,6.911301759220832,0.0}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.2869104466365124e-05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.037460785715964e-05,6.526485402916775} + }; +} + + +static std::vector> ReflectanceFrontVisible(){ +return { + {0.004193351567946662,0.004341334012399334,0.0033468715133179046,0.0034556236844722546,0.0038957983126031667,0.0039346166985533525,0.004671599267019603,0.005173040180595912,0.004934824236601663,0.004361037468226601,0.0030363561113597023,0.0022175306709419935,0.002567692064179638,0.0022903191166853375,0.004286464344234275,0.0043399526432219135,0.004484498314001724,0.00552886275510659,0.004869075226074139,0.005281462397024051,0.005056893736644198,0.005262628865590249,0.0020514945182786254,0.00023882403259165385,0.0012261196196252959,0.0003070594991838264,0.00372090249768063,0.00553671782898836,0.006857475512065461,0.007048325581675762,0.008186600143047298,0.006877095636992208,0.005917729540376865,0.00558777611489007,3.411772367072666e-05,0.0,0.0,0.005292872434889706,0.008772365281248033,0.011914096012065351,0.008124419975231646}, + {0.003096406386876463,0.004616268786862726,0.004522130723743997,0.003802256319905058,0.0038015020594468875,0.005276214813949093,0.004537644844939518,0.004109130972633917,0.004372965112229228,0.004626315311850185,0.0043570345144853685,0.005048223558927256,0.0015812565795954006,0.0026841983779222283,0.0037782601823547713,0.005620464614548546,0.004885220583666728,0.005054010433026471,0.0047085577412130574,0.005114181631175616,0.0046127834866786874,0.002978515575402319,0.0030179123656161894,0.0008873378273002028,0.00018386700630208206,0.0016525201731814384,0.004944457606404918,0.005304792221570534,0.0056539405092347625,0.00747336253933876,0.00739260619935444,0.007190589171993577,0.00647226824327468,0.005141427537763151,3.6773406938399416e-05,0.0,0.0,0.004640587377768736,0.007384651324137728,0.012650198722153057,0.008474923691783084}, + {0.004896719088075588,0.004200402095957051,0.004345443017332659,0.002965585658488268,0.005152869024006894,0.005660789509638455,0.005494985024574124,0.005584963530532139,0.005143414502350976,0.004053314759408621,0.005022694604301258,0.00323579876664246,0.003939139171380858,0.003930432930776319,0.004592051137876768,0.004189337739942394,0.005795618473435407,0.006586196530608171,0.007005750868188457,0.0059628241865668915,0.006150070046293391,0.004932151566635638,0.0019905396141598657,0.00033096064751460236,0.0002941872347580228,0.0013583327337356333,0.0029832920909803645,0.006362253137708564,0.00654393560454093,0.009317179238311154,0.009390471021445558,0.008462834866408017,0.006032504954767659,0.006543461738305126,3.6773406938399416e-05,0.0,0.0,0.003235929149955861,0.009947447969379705,0.01730471168970962,0.010004171720564827}, + {0.004962663603263298,0.005271300533679742,0.004644947970577032,0.0040517651186795685,0.004061220011857831,0.006264240965757349,0.006105968149900054,0.005956812905961656,0.005071972858433735,0.006117727974714308,0.005377288610414348,0.004348683435222593,0.003098518694691542,0.002757744471606467,0.004728637234127326,0.005108824699557267,0.006309189933096458,0.006602270592055905,0.006709754109316381,0.005805016916246851,0.0063066716214572474,0.0050791145904055795,0.004229151006704606,0.0002574138128886311,0.00036773406938399414,0.0005148277568615611,0.004047437233857312,0.0053648568699151775,0.007240408215452881,0.00788850992793594,0.009737378959273065,0.008791452689110432,0.008786504670406274,0.004116208122806495,0.0,0.0,0.0,0.0043047200535751085,0.011748855610017178,0.016155501949621665,0.012308740154909162}, + {0.0045592651041057,0.00492177268336655,0.004843728785961298,0.005833625538755096,0.0044265190067304784,0.004248247164090881,0.005912310136958461,0.005692711929204631,0.005717062856574334,0.005566359745400341,0.00477101134833228,0.003277609288460455,0.0019120867127123027,0.0024636879496250565,0.004140393526456881,0.005081473645136342,0.0050991258634055445,0.006357839361126141,0.007151816167796354,0.0074012156128241404,0.007171742845859431,0.004997122651221261,0.0029832920909803645,0.0011744656335014867,0.0002941872347580228,0.001107978349403741,0.0016548038929945065,0.005614669896420958,0.00782196536911236,0.007723143320508969,0.009583377010072908,0.009591988007769964,0.008023030549216407,0.00617572751961121,3.6773406938399416e-05,0.0,0.0,0.004640717852210261,0.011565519847721608,0.01640681929113045,0.010652329140370015}, + {0.00400647864782485,0.004678303204619508,0.004100335097006343,0.003818666391769168,0.0037044857496355485,0.004214355914433214,0.0038655721392580637,0.004384550062176845,0.004168504449220423,0.005375509046422954,0.004112759736521831,0.004799647070942119,0.002836197744576375,0.0037184984508984074,0.004483401180651243,0.00385386156568897,0.004976118320023645,0.00536883846787281,0.005041060888516854,0.00590536196812817,0.004967250852741244,0.0060361991486473626,0.0019169935204756275,0.0010712049366471616,0.00011032022544170289,0.0002941872347580228,0.0012135224737601577,0.004343777475651791,0.007583626536836361,0.0065059758347166975,0.00760005437167446,0.006565700175603507,0.006910643580380977,0.003020195237236735,3.6773406938399416e-05,0.0,0.0,0.003282385804038501,0.0071492590636164765,0.012268114866478974,0.009132794430101579}, + {0.003740277980992751,0.0038793282798074567,0.002756802255891187,0.003410206405375476,0.002822465437535883,0.0032099179172673906,0.003385612937003423,0.004091906355553827,0.003746989216705137,0.0035486425497150745,0.0031585820321931965,0.00187544339376209,0.0024684644652031022,0.0018017669167644502,0.0031634889310846433,0.003083831736452008,0.004502421722725601,0.0041464098471482615,0.004304049820255526,0.0041527523644582336,0.00448804310700255,0.002904837878689812,0.001103202254417029,0.00022064042817147378,0.001284785899109662,0.00036773406938399414,0.001983480689611742,0.0029832920909803645,0.004178768742380685,0.00583377274572184,0.00625531078129726,0.005298498773249475,0.004272044684393753,0.0035327399913934513,0.0,0.0,0.0,0.0010664288325476373,0.007992536275562732,0.010200937903461379,0.008463602775054962}, + {0.003418127451029261,0.0033463326015199576,0.0029703841429536354,0.00252202265674581,0.00263547146995905,0.0029668567836362413,0.0035704503014879,0.003228360847243671,0.0032945115433129436,0.003250686297879109,0.0024214438472111577,0.0026155578722864468,0.003980818833215273,0.0029794914384242833,0.002904837878689812,0.003143310360871902,0.003931949863519333,0.004105490053656463,0.0036210361320172567,0.004057897340322765,0.004088965020161183,0.0026843287612356294,0.0031211731458877954,0.0002941872347580228,0.0011744656335014867,0.001284785899109662,0.0016180301907308926,0.005406144919158923,0.005498010940883945,0.004745140775405461,0.005901961816659609,0.005325409608741282,0.004652047089636933,0.0035028952930150274,0.0,0.0,0.0,0.002247954128034053,0.006434154256628145,0.00914949330801473,0.005884682894228502}, + {0.003797708325618243,0.0036195949057142834,0.003174613571857109,0.00302044011953084,0.002895166990832204,0.003504481861663165,0.0034306652786824637,0.003886947053479673,0.003485023995730033,0.004204290224500656,0.0037868361307740314,0.002100860629822586,0.0029096143031397347,0.002542010558887341,0.0026346148656097145,0.0038465207538192435,0.003691272543428782,0.00418419671187527,0.0037768754975467385,0.0042924587857532835,0.004196916886901134,0.00198576440942481,0.0012502958956295495,0.0002941872347580228,0.00018386700630208206,0.00040450749125338587,0.0012870692235668764,0.0031623826847492777,0.004284613355411416,0.0055796977270360605,0.006940995224503589,0.00510972476501107,0.0051755276811164845,0.0015444828773317864,0.0,0.0,0.0,0.0029465183887167506,0.006726388496558383,0.010218806396804149,0.006636713846809294}, + {0.003763454082769625,0.0037026707922462837,0.00391768452377528,0.002960848175015128,0.004024353328143883,0.004319917353788949,0.004010720518433415,0.004245776069013669,0.0037397463420528274,0.004197125144871428,0.002891311355770446,0.003125424681921464,0.002477642853368681,0.003382751651451381,0.004371255414896675,0.004410989233777013,0.005708349171826194,0.005017262726908676,0.005303219332943409,0.0042298085547604536,0.004922398718709451,0.0036681937207484858,0.0018706274382445536,0.00022526095587871182,0.00022526095587871182,0.00028962125606535165,0.003445457018467621,0.005994605050668406,0.007256328214387629,0.007635253012954088,0.007152939939809627,0.006006252809432911,0.005446933420612474,0.004344502295634525,0.0,0.0,0.0,0.005213137524718875,0.010607272025361979,0.011791207692061543,0.008093278693329563}, + {0.0048216141549755984,0.0047354959892528595,0.004219545914981111,0.004215892666724882,0.004855998887252478,0.005565658606114751,0.00554577129101336,0.005682193530815393,0.005244960909445278,0.005429838101749964,0.003729570808959,0.004734089191744697,0.002059529536041755,0.004779264436449413,0.005422845029814249,0.0063112927358617305,0.006814295812214605,0.006855532773504704,0.006386322183712764,0.005833006199926573,0.006385100236406102,0.003954717458782931,0.00248622968933846,0.0003218014101459494,0.0003218014101459494,0.00041834187238774275,0.0032585531419018613,0.007080996773840495,0.008970300701317869,0.00950129070792475,0.009757627280574633,0.007360280842139389,0.007599036586571941,0.002509937350309701,3.218014101459494e-05,0.0,0.0,0.003055114864454119,0.015661070479863676,0.016549287966621907,0.012020133551316373}, + {0.0059679221872421155,0.005975128406783576,0.005295733065408018,0.005888990114509064,0.005391143508567737,0.005527612289103785,0.0069698303200479775,0.00665164914779158,0.006514968943380677,0.005556884141117517,0.00503904070488772,0.0036039474241969364,0.002509937350309701,0.0027351976927610503,0.00657642831060336,0.006378873126681199,0.008054134586710162,0.00834171514353948,0.00726599051734411,0.007923562566861338,0.006947775072900957,0.006954290898348426,0.003846155132965167,0.0010661241444485095,0.0019589925515915217,0.00045052202646834045,0.0041958430816832135,0.007659042873191941,0.011616049642892774,0.010824517000774716,0.010957334164771322,0.009466344977921785,0.009330686418380772,0.006476750369831967,0.0,0.0,0.0,0.004058877345237755,0.012776256546719815,0.020336220448020206,0.01232917841617705}, + {0.006454762354323907,0.006164372300173047,0.00610827804841081,0.004941675060157512,0.00685037515598399,0.005863511617561218,0.006698897856728058,0.0065346333757840755,0.007283803221104574,0.006227158719346731,0.00724605330606103,0.005643835016082414,0.0027351976927610503,0.0029926388395260014,0.0039693256180002206,0.007484246825912772,0.007177201893745878,0.00811979462476762,0.00818954344450888,0.008954804219533713,0.00830085269805718,0.006311258709045918,0.0034193397350698153,0.0010339439903679117,0.00035398156422654717,0.0004827020903751159,0.0032523758486130896,0.00657276524750933,0.010363135296103103,0.01211411332237497,0.01239195657248416,0.01111903975187428,0.010713008174768206,0.007381974087396811,6.436028282664546e-05,0.0,0.0,0.003990109359043941,0.016724863943852936,0.01960488087501984,0.013495941797282895}, + {0.005195197228066953,0.006667617066906855,0.005737013080517769,0.004382363357581931,0.004643414407825657,0.006176082628528553,0.006009794413909112,0.006603945435243034,0.00687380963321349,0.005736879678469184,0.008329545149523946,0.005836801763330964,0.004543646581542792,0.004127188696102713,0.004461373703646475,0.005539083380787807,0.0066248857168154625,0.007487622148633744,0.007849734534903135,0.007910985257076916,0.0077040684416201394,0.0065085194478339435,0.003355093438518267,0.00045052202646834045,0.0011564869520928143,0.0020295304842922646,0.0039280440850779415,0.006600651655421398,0.008743349753054692,0.010539003694157972,0.012331693468364458,0.01066396711082324,0.008830858442057658,0.00499175895061921,3.218014101459494e-05,0.0,0.0,0.0031900135960579476,0.01396840355209758,0.01993253616912064,0.01399994598709183}, + {0.0057252834476031545,0.0052032024551512575,0.003952398298489555,0.005436452075575479,0.004324473892239693,0.0052411588866507555,0.005255816120057068,0.005449729422532035,0.005883885993988659,0.005621244614904102,0.00474767865667771,0.0049637584452176635,0.0030567710385880726,0.002799444394174658,0.003953141772453247,0.004795357911877302,0.005807269241493691,0.006604556329150809,0.005814499998129663,0.006709635614402696,0.00673642480932805,0.008318623688756976,0.0026106572158596008,0.002126070535537725,0.0020233521236398817,0.00035398156422654717,0.001641186876626706,0.005889477096089555,0.0070480757589967725,0.00847370172688688,0.01012407128601793,0.00886361464123755,0.009736991663836205,0.007763728012960422,0.0,0.0,0.0,0.004312321896182982,0.009369540005801159,0.015974338816654204,0.011024049297892765}, + {0.0035731664611252027,0.004123142529217804,0.0029013555356630807,0.003501012681005334,0.002982893932440847,0.0035838732223151992,0.004244534817147898,0.004369777956690594,0.004047839008155353,0.004022479920977946,0.004372831598102523,0.0027029032755655873,0.001319385335820728,0.001962874319943206,0.004322676550066742,0.005081108326572582,0.004028017943209141,0.003822446570255702,0.004969262440633045,0.005111593212793396,0.00525029527379203,0.004251844092486306,0.002769673537404123,0.0008408631885697975,0.001059946489851021,0.0009695837969176331,0.0017740871416281482,0.0027286610107832452,0.0049440993250952255,0.006160960417181254,0.00704000878431413,0.00783085446753143,0.0069291219736534815,0.0036021778948206137,0.0,0.0,0.0,0.0027114911788989776,0.006687493015199215,0.012728777268840493,0.009237165736360482}, + {0.0031237847022698886,0.00323418036617825,0.0027219661442913997,0.0030870363178130103,0.0035738841711396574,0.0026489252684593918,0.0035323379627131596,0.003029900546134328,0.003142603022043254,0.0031349144032237013,0.0029282788626155817,0.002989199560868186,0.0022244949558960945,0.0023210352525124996,0.0025999406398317993,0.003951078607666908,0.0030957482132192397,0.003963377421428627,0.003697130316305637,0.004226629774166516,0.004336524059354183,0.0033785725793940517,0.0015446469051268025,0.0002574411099593096,0.00019308083430976427,0.00045052202646834045,0.0027738534314541196,0.001641186876626706,0.003827699557328508,0.004360609671326454,0.005729010307142914,0.005537789049052337,0.004835810992743323,0.0019993486311886653,3.218014101459494e-05,0.0,0.0,0.004252026973585973,0.005880321079272671,0.0087393117692908,0.007082767204955042}, + {0.0019416534137551259,0.002337653901508487,0.0023844141627730746,0.0018282859028393875,0.0023125294687001644,0.0017698054186359297,0.0024725318563275384,0.002575777736011817,0.002732567395974998,0.0021159194597928518,0.0028311307760338585,0.001801973549540217,0.001544532807637325,0.0020914805934051746,0.0009975844250046518,0.0019343474938643924,0.0024146475437751475,0.002371991031822014,0.0026851399711106485,0.0023974180008713864,0.0028188299256932947,0.0021559554100521803,0.0009332241168434564,0.00022526095587871182,0.0001609006802291665,0.0001609006802291665,0.0026087728467466915,0.002574182904614141,0.0031484392497183188,0.003703479289510431,0.0037973802964956457,0.003942145473548017,0.0035180757765284785,0.0021862514403908143,3.218014101459494e-05,0.0,0.0,0.0009010439627628586,0.002895017604150817,0.006158144460469581,0.0037479454121837714}, + {0.001902307280968066,0.001910001708944744,0.0023021020255255373,0.0014084823048171368,0.0022941030124604173,0.001882493252033706,0.0020103473838033463,0.0016186937220882159,0.0022360163486238654,0.0016338244416730392,0.0024540496150034195,0.0017097274898342308,0.0017460866362266016,0.0008366836625762189,0.0015768272248327885,0.0014563181925595422,0.0020664871089359853,0.0023072499079540036,0.002223363716093567,0.0025012033715184115,0.002222251038603038,0.001576713127343311,0.0013235652298707245,0.00022526095587871182,0.0001609006802291665,0.00012872060834783535,0.001130484452609705,0.002699578419513751,0.0031205102270073573,0.0036720350028942262,0.003135283686496096,0.003204071302365519,0.0032859785775536205,0.0015748287582304018,3.218014101459494e-05,0.0,0.0,0.0014139279878274131,0.002706723621435436,0.00701855485547375,0.0031087074796853726}, + {0.0023123696524693393,0.0017909833051630577,0.001574250829909104,0.00261338091309591,0.0022069509333205294,0.001642527828841747,0.0022821938538938108,0.002673218218880284,0.0020855903841221846,0.0016741695593232102,0.0026320061198011986,0.0024819360229154886,0.0023792184330103114,0.0014802861062237168,0.002406745452233347,0.002515184607970938,0.0027723026870810066,0.002816962652800986,0.002554619399414741,0.00297108267688134,0.0027772960655596092,0.0016410727791372284,0.000611422706697507,0.00012872060834783535,0.00019308083430976427,0.0002574411099593096,0.0031216569313136998,0.0033785725793940517,0.004356828505062266,0.004142635619090229,0.004534539964031434,0.002940292224088304,0.002147263224067117,0.0014201055264871298,0.0,0.0,0.0,0.0029991138536510256,0.00526310609083637,0.005754234440300509,0.0037184407828886835}, + {0.0031200914646838805,0.002985288348003088,0.0038444718882816933,0.0019124627795242253,0.0033677705283975193,0.002831453033964622,0.003340172026483898,0.0031037145858143866,0.0027919065987407933,0.0023200350407946626,0.0032820317859014814,0.003060950110645403,0.0010941248467602393,0.001319385335820728,0.0025100514477991785,0.003669684349240045,0.003977375011854646,0.004609491874663812,0.0032706854285374063,0.003548348821743828,0.0035157557942424368,0.002474545124932189,0.0006436028282664545,0.0002574411099593096,0.00022526095587871182,0.00022526095587871182,0.002443692182293706,0.002381216157365589,0.004275626671341364,0.006269490439914092,0.005449477917313293,0.004590836321706886,0.00444112201269159,0.0010297645790852497,0.0,0.0,0.0,0.0020315282086475423,0.0055760975878580725,0.00801251361989096,0.0044847624621346255}, + {0.0034417974993899932,0.0038982092029353523,0.0030603478612059327,0.0032646600575315815,0.004618994864700087,0.003928640183095519,0.003965343096191643,0.004498124948371227,0.004052038705012011,0.0034978558360213336,0.00236957167607689,0.0027526947110172915,0.003035081860578967,0.0030727411621427588,0.0037151258554288234,0.003721763962286909,0.004807125546322138,0.004610516252075507,0.004338598707546227,0.004743157937289155,0.003845327184174593,0.0033803649943272398,0.0007898572896000022,0.000315942922464858,0.0009774612794203681,0.0002527543201449981,0.0027253159832211944,0.00426922079449741,0.008024986818007071,0.007360934023782864,0.006598053212698382,0.005407032781827883,0.004764603202123371,0.0031085507192756376,3.15942922464858e-05,0.0,0.0,0.003961597040606695,0.012234810263556304,0.01066997460158049,0.006832405727381026}, + {0.0046602376117189336,0.004878929361605067,0.005010842312532897,0.00448496075496676,0.00428874332704278,0.0060770367093147554,0.0063020072217623,0.006026813143341646,0.0057277502285978605,0.00601595319570374,0.0046975307393605946,0.0034203907791791597,0.003361305485092844,0.0031360422744114917,0.004568395729552899,0.005807983590404325,0.007732672018885545,0.008038992163500491,0.007296544025903588,0.006879320159143017,0.007027550735475762,0.004841909262394094,0.0017376858937821866,0.0003475372275394763,0.002081299973066846,0.001293404508435434,0.005012415336680913,0.006579595156176281,0.009198328835657136,0.011268073931639486,0.011099950716083135,0.009139235995256276,0.00849916879745106,0.0038036255152336038,3.15942922464858e-05,0.0,0.0,0.007721385352153811,0.014176929293442596,0.018970277648328752,0.011199774063525887}, + {0.007205481148643897,0.007396722706593143,0.007173991474153968,0.007249760886764993,0.007505715253814341,0.0078958482729347,0.007508045601518049,0.008033835615603653,0.007528454094277053,0.007681292035917207,0.0076545055342141805,0.005351633395646246,0.002748703740486335,0.0050314753337457,0.008368396923962872,0.008920783137718748,0.009444233896679085,0.010214840893204144,0.009218721031267568,0.008689600918309281,0.009618095123843784,0.006090944169532574,0.004297003921641357,0.0029639779494080873,0.00041072583768871285,0.00041072583768871285,0.004073589648362865,0.010634494275757269,0.011949593462853188,0.015193616006314303,0.01499706173451755,0.011782114665219003,0.01189964894790817,0.006670455276671785,3.15942922464858e-05,0.0,0.0,0.0041704465835223385,0.01969863853310755,0.025607662577663892,0.01842522053812145}, + {0.008386314958266194,0.008753138513887659,0.007152551346595338,0.007292823662719162,0.006862873650153666,0.008044937593363412,0.0102153343486998,0.00968757542104846,0.009776708977297746,0.008636267204743264,0.006598170936409828,0.006385590111340667,0.004079654801439572,0.005951700832242923,0.008287826218408048,0.009347164080769192,0.010443567097392484,0.011555284374693275,0.011559137235020575,0.01201265961552942,0.01036971680351186,0.007776913621919882,0.003856645246706591,0.0005686972745296223,0.001324998735216286,0.0007898572896000022,0.0030330522452540034,0.00776217672356506,0.012419944907738449,0.015899009896572957,0.017727984436723698,0.016267504566386346,0.012399350816595264,0.005594331628319167,6.318858527590927e-05,0.0,0.0,0.0051143522966146165,0.019628655951279425,0.02967427614907018,0.02136082723568135}, + {0.0066866416094533065,0.0074758034215503515,0.006389588230694742,0.006753894828431951,0.007778521655426604,0.007225658054464945,0.007840300652563173,0.008589502055103114,0.007718826067455006,0.007952875043228516,0.008033524530379973,0.004609278006049356,0.0029697512112790373,0.004174326021571981,0.006393938955058995,0.007906634744884285,0.008652229496901375,0.009341189664144966,0.010344851907871965,0.010231913433125791,0.010792993380662903,0.00884235205625306,0.005880709748411798,0.0006950744550789526,0.00037913153261409454,0.0015145639995398398,0.0033785156594329526,0.007391364196914978,0.011688476525309598,0.012505839191906494,0.016060158582980266,0.01459869178960641,0.012731119687442395,0.005149757942230034,9.478288071437169e-05,0.0,0.0,0.007160491219814389,0.014205669128251875,0.028085346321311985,0.015718267773581047}, + {0.0053584087394313645,0.005874472668247016,0.0049468148750173085,0.004584443223396477,0.00478207957526871,0.005536453262752502,0.005373687749846264,0.005773617047609312,0.006499059459980164,0.00642307387225794,0.004359900315364578,0.002748703740486335,0.0033528739270217763,0.0027842889377981436,0.0045534572789533755,0.005282040680638439,0.0064253624592712525,0.006462461261785094,0.006456529081636459,0.0081819228541182,0.007706647978013796,0.008625183613973377,0.002274789164367061,0.00037913153261409454,0.0002527543201449981,0.0013565924741667484,0.0032502885381160336,0.005304127954355861,0.007872672113606732,0.00952909590765218,0.010160878420469205,0.010166142170599824,0.009958202359089762,0.006108047141638901,9.478288071437169e-05,0.0,0.0,0.002936307649603896,0.010877150747739794,0.018410898801496038,0.01649364183662886}, + {0.003320057112968023,0.0037449513597816314,0.003144314107176822,0.0032209271712547198,0.003480603503499402,0.0032655365502220956,0.0040645232302317065,0.00417908788457058,0.003869184294500579,0.0041682576524282615,0.0029570868151652893,0.002457712389076424,0.0013901491040855416,0.0022155919282628067,0.002685402628217602,0.0036625574092244723,0.004316394595439177,0.004676821435929082,0.004436475551508183,0.0050585544553887665,0.005349680472076619,0.004413294254904631,0.0064890956748358914,0.00022116001507037982,9.478288071437169e-05,0.0010151207411852508,0.001042611682618429,0.004283651823197902,0.005300451760900794,0.005761383140735366,0.007331863343607825,0.006777237530645915,0.006136919473591054,0.0035425519403913196,3.15942922464858e-05,0.0,0.0,0.002152515175815145,0.007943986893980499,0.011803545475819452,0.01001177665735426}, + {0.0016818764951919204,0.001820745624414506,0.0020895365555695746,0.0015360007544439243,0.002335052556799259,0.0018087570420231925,0.0015240050232294927,0.0020017186537908647,0.0019381621833922252,0.0016099715002726145,0.0028747446589457992,0.0016711202145231197,0.0007582630652281891,0.0012921012966510932,0.0016962970807085146,0.0012706933719207792,0.002020175427499721,0.0021286753262533165,0.0018287195433766776,0.0023662302607436875,0.002027260489378909,0.00214830016466078,0.0014889233150606129,0.000315942922464858,9.478288071437169e-05,9.478288071437169e-05,0.0009477166663800647,0.001074205987693047,0.002591099593554854,0.002264751903534466,0.0025540208703807555,0.0029765025429683073,0.0024652393530174934,0.0021505538206091517,3.15942922464858e-05,0.0,0.0,0.0011099036564091056,0.0030347482086828157,0.004966893817268991,0.004418650753035262}, + {0.00045474452030275843,0.0005188662716936861,0.00036033235617506025,0.0006004221254255579,0.000980419827998217,0.0004555651991740959,0.0004470502100611979,0.00048540595695934814,0.0005702790175918991,0.0004948049429191251,0.0013262518329676329,0.000694962322144677,9.478288071437169e-05,0.00022116001507037982,0.00022116001507037982,0.0002655494807003483,0.0004729477324225133,0.0006672854679477322,0.00041602960978585587,0.0008038554922928999,0.0005979082854399801,0.0008181865922504942,0.0014299501195797672,3.15942922464858e-05,3.15942922464858e-05,0.0,0.00018956574191552778,0.0008213395346137734,0.0006890704470246451,0.0008150850672102875,0.0008538421678287804,0.000944745357725097,0.0016833376556157644,0.00015797143684090952,0.0008510841476540769,0.0,0.0,0.00012637721246909646,0.0004329205545438139,0.001374003803260131,0.0011863716848985924}, + {8.715125083596545e-05,0.0001431637970569877,0.0002608497672933949,0.0001438721430438156,0.00018016623439881584,0.000357499205904528,0.0002709165466826432,0.0002892104591192941,0.0003754503199263508,0.0003193385833328729,9.478288071437169e-05,0.00015797143684090952,0.0005369909172235336,6.318858527590927e-05,0.00018956574191552778,0.00019296137086377644,0.0001670140861891552,0.00030427875691883734,0.0003238986531828713,0.00016415926239734703,0.0003696139014854697,0.00012637721246909646,0.0,0.0,0.0,0.0,9.478288071437169e-05,9.478288071437169e-05,0.00025204605486097543,0.0003283811519783134,0.00041611441578667303,0.0001939085971540149,0.0005143305409665742,3.15942922464858e-05,0.0,0.0,0.0,3.15942922464858e-05,0.0006317737119954403,0.0005532937589586029,0.00015797143684090952}, + {0.00039650841245032943,0.00044465040615067515,0.0004632106378445067,0.00035093280770468594,0.0002608497672933949,0.0006334940386375289,0.0005702790175918991,0.00048496398684211647,0.00047908653403608677,0.00032403829673982625,0.0005654322721054962,0.0007581509244645368,0.0007307721237950108,0.00018956574191552778,0.0005955917854944822,0.0005848880321134549,0.000599108227746644,0.0005000050625013962,0.0005770950241479065,0.0007932070504464262,0.0007713900787298463,0.0003475372275394763,0.00012637721246909646,3.15942922464858e-05,3.15942922464858e-05,3.15942922464858e-05,0.00028434861739023976,0.00028434861739023976,0.000897565984073953,0.0007942931337423986,0.0004806153420807455,0.0007248894837258375,0.0006589109336356592,0.00012637721246909646,0.0,0.0,0.0,0.00041072583768871285,0.0012717545535832675,0.0020163102027799507,0.0005592976863101052}, + {0.0017415147420136398,0.0017739922007715004,0.0010830886359005948,0.0015738408122235857,0.0019221926641172294,0.0017517977248202952,0.0019843964591390534,0.0018455152847216612,0.0018015924818582784,0.0023444525485328016,0.0019159098905059471,0.0014532250495051515,0.0013310638882929918,0.0007898572896000022,0.0025494016164660733,0.0015981551641670397,0.0019274263012608302,0.002394247383864551,0.0023176616262432816,0.001926693068094752,0.001857658045606503,0.0009129694996449724,0.0011099036564091056,0.0009774612794203681,9.478288071437169e-05,0.00028434861739023976,0.001267874796335963,0.001800762646229849,0.0030923402961045036,0.0030648045832844884,0.0033555129509102027,0.002789653789271373,0.0017343358059087237,0.000315942922464858,3.15942922464858e-05,0.0,0.0,0.0013942520949282024,0.0035373869608581188,0.005011326131872708,0.0019924197633999336}, + {0.002751569324400563,0.002217633551497836,0.0015035450986121937,0.0017629714872591695,0.0017638103869159123,0.002586232207281813,0.0027218306163331327,0.0019075008143598466,0.0022931976304871255,0.002312727730150016,0.0021759133014127756,0.0015340918209756098,0.0006056190866872698,0.0012568566231541854,0.0013607249618344517,0.0033902351775695764,0.002884974380273202,0.003389385503054857,0.003073845326478083,0.0032005730489361346,0.0027684046782614903,0.001287815058228313,0.0005248699513226057,0.0008531106069228386,0.00016149848699612042,0.00024224763236600978,0.001090114413759539,0.0031087018919798517,0.004768790925440585,0.004417816350817743,0.005003746970518848,0.0037079055974425968,0.003511095120174451,0.0007671175836886156,0.0,0.0,0.0,0.003555703032197217,0.008278223638955801,0.008373342138001701,0.004738031376543152}, + {0.006939283965333584,0.006909385273714183,0.005357830353343036,0.0057170287151752175,0.005284585947349548,0.007311608051351922,0.0090920065937978,0.007528919596913186,0.008042620594441358,0.006055161098303229,0.005559035433400175,0.0041946433825695096,0.004370802566935364,0.0029875776036271777,0.008568540904317393,0.009236678041275186,0.00917099092056192,0.010620564888716216,0.009936711228364467,0.009589323242234634,0.008428083442224003,0.005680302350087149,0.0033538299109455347,0.0004441207028219328,0.00032299684007614887,0.000726742959438279,0.008386499778856448,0.011558124170793627,0.013878426318248047,0.017766970170035697,0.016644614785239292,0.012544732869100307,0.01034130211968094,0.004317290004427723,8.074921671484183e-05,0.0,0.0,0.012650420372461075,0.027314711357435146,0.02951666541256883,0.014838974021493472}, + {0.010893678700283092,0.011870191356665775,0.00966377607163917,0.007868584680499372,0.010195501867296623,0.01119544358266427,0.013468086270568395,0.011977781392092114,0.012575564255515133,0.013657248237990893,0.011459613854205302,0.006707142728760448,0.005851525110234337,0.007893880968497375,0.009777869503487044,0.010716704836601962,0.014202459030081077,0.015608550620180506,0.014946005811528048,0.015366495675369324,0.01520990209382339,0.01436737090203713,0.009529840377100167,0.0016932268628850322,0.0006863683351879427,0.0016528523386869485,0.005829675237523392,0.013092216124915694,0.016054122783340372,0.023109760460961203,0.024022806533236706,0.02075872231537035,0.017075271466428812,0.013186063698677957,8.074921671484183e-05,0.0,0.0,0.010510479704035602,0.03349307649178502,0.04626035963469844,0.02935241039904401}, + {0.007310088796377233,0.008014741011154503,0.006219576295484526,0.005141944267617776,0.006282825743114496,0.007039338165143401,0.007935221020022408,0.008668173445452954,0.008577022764767924,0.009196280020190385,0.0069771345021396505,0.004728929600031595,0.0038003138579800273,0.005218525293095543,0.005446113382540888,0.007642645144324435,0.009018796559601255,0.010229913685142755,0.0093378693503289,0.010795123744997435,0.0106523060810496,0.01166687440444524,0.0028262221582581242,0.0016932268628850322,0.00036337145432126006,0.0005652445755729421,0.003752188724460642,0.008286709201339683,0.010671031752904946,0.013036873375817472,0.015985686042012733,0.015401520421011452,0.016946481128300973,0.009952842422167648,4.037460785715964e-05,0.0,0.0,0.004645816963397045,0.017310721584923264,0.030539994772985177,0.024843282183362233}, + {0.0019025350440458465,0.0025164464306465326,0.0024374283400953106,0.0016400134258274727,0.0017621433624604031,0.0019305111931491512,0.0024608913629718815,0.0025710041543778963,0.0024694158148967286,0.002116836294392977,0.0019319751346207844,0.0015798531838536595,0.0008478667813935293,0.0009286160298942023,0.0012919875350112212,0.0017121849638195856,0.002690451151374675,0.0027628860038067526,0.003446818982505862,0.003360907453370679,0.003057141118031384,0.0031544628138583572,0.0012918442294001335,0.00032299684007614887,0.00016149848699612042,0.0012087312541271902,0.0030360763707395527,0.0034730013794312,0.0028171865701598522,0.0031660918640936133,0.004863170984987716,0.004903791691601583,0.005634865805308027,0.0029852143232418802,4.037460785715964e-05,0.0,0.0,0.0014183550793649977,0.0028228895485602787,0.00858125574468727,0.010038103873335799}, + {0.0001364260510594856,0.0,4.037460785715964e-05,0.0,4.5475348659969894e-05,0.0,0.0,4.263386976459667e-05,8.526774476269576e-05,4.037460785715964e-05,0.0,0.0005651012699618544,0.0,0.0,0.0,0.0003137586207684034,3.436871841422777e-05,4.263386976459667e-05,0.0,0.0,0.0,0.0,8.074921671484183e-05,0.0,4.037460785715964e-05,0.0,4.037460785715964e-05,0.0,8.074921671484183e-05,6.873743582793303e-05,4.5475348659969894e-05,0.00011421278856695629,0.0,0.0,0.0,0.0,0.0,0.0,8.074921671484183e-05,0.00013747487573491943,4.037460785715964e-05}, + {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}, + {4.5475348659969894e-05,3.436871841422777e-05,0.0,0.0,7.474332627138744e-05,4.5475348659969894e-05,0.0,4.093942591228848e-05,0.0,4.037460785715964e-05,0.0,0.0,0.0,4.037460785715964e-05,8.074921671484183e-05,3.436871841422777e-05,0.00011421278856695629,4.263386976459667e-05,4.093942591228848e-05,0.0,0.0,4.037460785715964e-05,0.00012112382865105482,0.0,0.0,0.0,4.037460785715964e-05,8.074921671484183e-05,4.5475348659969894e-05,4.5475348659969894e-05,0.0001318901283118042,0.0001224779358382718,0.0,0.0,0.0,0.0,0.0,0.0,7.474332627138744e-05,4.037460785715964e-05,8.074921671484183e-05} + }; +} + + +static std::vector> ReflectanceBackVisible(){ +return { + {0.004831591383227563,0.0052018876435119404,0.005264330557630642,0.004898666703274051,0.005132228655821211,0.004631759727968409,0.004545564717148163,0.005931414460448086,0.005381128748989969,0.004853211937538373,0.005925868172150045,0.006291660798209617,0.005753749748241279,0.006028018296136075,0.006470284931143459,0.004524358580094199,0.004770922572469506,0.004823771428901151,0.004575963944121315,0.0037867039664180656,0.00445550344000389,0.005971143782628047,0.006890641379566268,0.00787720596541201,0.007377596471611415,0.00743278065490557,0.006901118713581446,0.007106012618615107,0.0031772583689050967,0.003514320167994156,0.0003752949742307067,0.0009552962779988204,0.0035571053207292852,0.0076863035221388775,0.009177868674655818,0.01226183293980609,0.007564995719726711,0.0036469242339198593,0.00038022732912682406,0.00032602276680765614,6.82354481869241e-05}, + {0.005370766178151592,0.005653217463663397,0.005811901996377106,0.005240627179246096,0.005433396433630906,0.005064204536503018,0.004422339821974201,0.004661266914318874,0.004436705728829122,0.006074638392591845,0.006150364460226874,0.006554084473419552,0.006059150817719327,0.006118631215632678,0.005635706472954146,0.004645040038019946,0.005507758383374117,0.004642740805396526,0.003130385498063709,0.0055987186406327655,0.004835157134583498,0.006869741444715334,0.006383959484910868,0.007724551271027603,0.007917396231852452,0.0076284531611663965,0.006182182194610129,0.006975024897778984,0.0017283499866787453,0.001103202254417029,0.0005883744975554679,0.0017996135802647829,0.002615688255599848,0.005113866187675451,0.007801899419239033,0.011167796436496624,0.006827851578342265,0.0027580052382332695,0.0012112390553708785,0.00025563751548992735,0.0011907308817497434}, + {0.0042585376320518,0.004142441806251282,0.0041400360238233605,0.0047191117797430035,0.0050673431783000876,0.0036823318021262205,0.004156647040206931,0.004367985310839966,0.0047710071424189445,0.004923601884145157,0.004355842839040303,0.005163831498780852,0.005458944553202003,0.004756407015260223,0.004750627151016565,0.0047959234356690665,0.0027525351184772067,0.0039024959435587678,0.002904837878689812,0.0027260080515477013,0.004735777472999937,0.0048462285004537125,0.005322720628148769,0.005935325925179223,0.007084335183398188,0.006155362487240592,0.004908557332143981,0.004642871188709927,0.003686762402361986,0.0026063455201105336,0.001524731908308157,0.0020202543007472335,0.0016548038929945065,0.002390140636225951,0.009757545374396267,0.007728249299298297,0.007867340255275248,0.003870759895022346,0.0011657316710211682,0.00017367379798408956,0.0002300696281261547}, + {0.0044409032303379765,0.004318512554245287,0.004284998434816706,0.00455298381087418,0.0036683289146611435,0.004135207635314177,0.003501080679745837,0.004024414155386766,0.003803020394161012,0.0036228223343418658,0.004735277908633652,0.005171202971758796,0.005118209494179939,0.004965152101986817,0.004627398005070872,0.0034350030684306247,0.002868064547948542,0.004385326382650461,0.002904837878689812,0.004054496249533559,0.002890227937733307,0.004819268595972993,0.005167850858830381,0.006201002254815495,0.006261778074036188,0.0053670485222853314,0.004883407372368649,0.004818031118131703,0.0037284425408665796,0.0016157464709178244,0.0004412809131227776,0.0016157464709178244,0.002542010558887341,0.003790153194424649,0.0073015410746566254,0.01090471057795269,0.006710764930488017,0.0038220199977968177,0.0003229218944692241,0.00023354847924307926,0.0001982343691040038}, + {0.003847611487344257,0.004115653033374328,0.004620981183291972,0.004731973462723042,0.0053137690425996585,0.004270360454437964,0.0033539971775883976,0.005345996152547569,0.0037042739608695373,0.005474240149160322,0.004829170717935932,0.005116192057749997,0.004784161837361358,0.004607207847566892,0.004370841125994788,0.004360113243046974,0.004579110944514467,0.003792176147610916,0.0020225371723677794,0.002615688255599848,0.0038902500974191726,0.004588944832543394,0.004805657321098586,0.005960187078905516,0.0072270183608860224,0.006245303139978588,0.004391766946810142,0.0044456517064937855,0.0036798333984767962,0.0008457884043761636,0.0024960245044478133,0.001983480689611742,0.0026940108648621326,0.0034662529133854592,0.009663056264720986,0.008580565390524942,0.007290036590840973,0.004590304281871413,0.0011308562004907537,0.0003473475959681791,0.0001315235953893483}, + {0.005403907373264424,0.005026312152420277,0.004812050309368585,0.0054990703683940306,0.005427673959074713,0.0042578160795796694,0.004344466306118174,0.0048301114405519775,0.004572989938640165,0.005928390374088942,0.005795545570937591,0.005785829539610181,0.006103126445584473,0.006270964819209743,0.006982436088598524,0.004954027923864818,0.006202652374814134,0.002684459144549031,0.004900154379950067,0.0032039319632702922,0.0038885799783026248,0.006092593436621205,0.005501036303415178,0.006972274601979894,0.007701376225898389,0.008149272811475672,0.006082823099942778,0.005810913606743258,0.0023534986281187275,0.00315794684815141,0.0004780543349921694,0.002937306036540837,0.0028731014586310458,0.004819678434188117,0.009533105221072603,0.014153445142778017,0.010801654485463413,0.005380962714048018,0.000354061953169247,0.00046330112170084656,0.0002630472132102344}, + {0.006527915280645911,0.0065507646058267106,0.006597832890836458,0.00694224438076424,0.006275229615331967,0.006585818089536096,0.005419705246403126,0.006420942080870147,0.006031570302686528,0.005450927143063845,0.006012977270673158,0.00742813495127074,0.006722615420774072,0.007461291568065801,0.0065966360701574115,0.006168417642234064,0.003934493501766681,0.0037506263924197217,0.0045693242468331655,0.0036036633686497787,0.0037711199434821607,0.0064765039695258994,0.00842858293865226,0.009040936252404928,0.008869386398596147,0.007566243497020634,0.006751480975518131,0.0048832629693441295,0.0053371300872362805,0.004369185398111704,0.0007354681478808005,0.0013238426454362687,0.0028731014586310458,0.0038292106165013313,0.011377408971819105,0.013670582647616851,0.013460996006700808,0.005079245913039626,0.000280515203362528,0.00023380503995654636,0.0003017184833737266}, + {0.006225717975068503,0.006225027833759131,0.006449725949767374,0.006479871504136544,0.006620079831089632,0.006180195973066993,0.004748219966617533,0.005381711829272209,0.004707625430423683,0.007056200798648089,0.006874676011506672,0.007324581530559103,0.006992375692259139,0.00669338189067229,0.006808319688334427,0.0062047202822041,0.003403385724788243,0.0037873997231609915,0.004746131968981533,0.003640306224949523,0.005460436250465004,0.0065416055285530475,0.007868683715122737,0.008324502376802571,0.009622501909019202,0.008664933208093369,0.007458051612826335,0.007542672156717235,0.004268078045467885,0.0012135224737601577,0.003084399534752304,0.005072656648813969,0.005711923230478321,0.005309699120461981,0.012351736835415896,0.014678048713118152,0.011150770899314415,0.006337070932597659,0.0002929845208934081,0.00034355161898575587,0.00025621119295608086}, + {0.006014196614018115,0.005658802545050631,0.005385210686516899,0.006704113516882973,0.005501751308682219,0.005462662952112952,0.0052858659830830115,0.004955454667806206,0.006128586612497868,0.006196875314512699,0.005676170163184128,0.005733952402558694,0.007253904991346582,0.006753962464386091,0.006952001637052192,0.00612384197073305,0.0038151642679317872,0.00430209687449673,0.003944306836899107,0.005484728575442232,0.00516257907592751,0.004890732671428023,0.008049031505456628,0.008706953086257494,0.008856446205233846,0.008935602896179553,0.007084151525182537,0.006581917805902952,0.005050002197617715,0.0013606160673056602,0.0006531873416616986,0.0038614167880106865,0.00198576440942481,0.0054079226185287385,0.010385731715713267,0.011552937619643293,0.010011854059607255,0.006771161474463823,0.00020013225455033868,0.000465198969994947,0.00023500779097339553}, + {0.005308463235156971,0.005872989070316199,0.0050881345235858876,0.004928994614830586,0.005296145288595808,0.004641942182154979,0.003739500971107714,0.00603329481617729,0.005395447314945014,0.006348506920252264,0.00533800557183205,0.005729551350076889,0.006423003992897959,0.005889565429629796,0.0055687830799842596,0.005205772715801314,0.005521339380891976,0.0038978621522287858,0.002610771313349078,0.002767378092212593,0.0039451439064972955,0.006182309817999014,0.007357358149066593,0.0070940668620939895,0.008816968317971326,0.007204027072320335,0.006985951191141888,0.0045661401409433445,0.0035055226787220647,0.0012550257637723677,0.0015104679593273159,0.0014522856008221704,0.004501109074498039,0.004897742619289791,0.00885941634436667,0.01202316625645241,0.008967988080160178,0.005036820097834449,0.0011750418127884214,0.00048070351949007766,0.0002318514967789689}, + {0.004646353951748107,0.004168097762064586,0.004308403322189531,0.00465174597826696,0.004451599352047906,0.0040699138052324255,0.0031966987274575456,0.003929175165389355,0.004720859612376882,0.004539368539114753,0.004802351388675076,0.005638547272215233,0.004645210523143881,0.0047100424342615835,0.004423027132344247,0.004109446745054273,0.003182394006219529,0.003961994756152916,0.002904571526760843,0.0028680979577624926,0.004649333981876502,0.003468804063895104,0.005333586441110568,0.006482976657564205,0.005941191476481528,0.006388086480553682,0.005030932422006467,0.006273167323526609,0.002930574307807112,0.002126070535537725,0.0013173879365819528,0.0013557456293222675,0.002192428979050531,0.004479400284991246,0.009451865313334177,0.00928597492476232,0.005699916999297393,0.004318500336580922,0.00029621180494016444,0.00033370546683717976,0.0002056536090256936}, + {0.0033056422002329007,0.003117581399660933,0.003871618502794247,0.0034349698642735004,0.0035118629841982235,0.003689509499612493,0.002969833738770716,0.0033450131952309737,0.0025225225058300937,0.0030856549591375825,0.003840630606135952,0.0036670036716646886,0.0038620825658744976,0.003597214040600983,0.003909593337114628,0.0027750622882208595,0.0018246939973194387,0.0027071971873595035,0.0037689135862983853,0.002803737563721466,0.003015131589202432,0.004076787050267094,0.003918712953151805,0.004586586496937532,0.005246930011279809,0.005052841593695589,0.003779864491578769,0.0045015519690539685,0.0032460833904712294,0.0012913848304191816,0.00028962125606535165,0.001542648358778859,0.0038356839278824778,0.004660011378298642,0.006406942010830875,0.007539704260326884,0.005433662533046049,0.003033292719704955,0.00022066221362540786,0.00033015924325293706,0.00023783375513173566}, + {0.0032632314640869387,0.0028285813719141364,0.003254569464862398,0.0034630983674285667,0.0032133070647395643,0.0025295204851847105,0.0020924767994423324,0.002801821216640135,0.0028520960915769614,0.002387854263423556,0.00339183618557768,0.0036525427350144655,0.0033372962790071767,0.0036697052057703804,0.0037753558004623208,0.0032005510512958164,0.0026395116121501394,0.002708165255483531,0.002250612159548343,0.0014447809304658956,0.0027672639947231154,0.00263854362377167,0.004643238967599901,0.004339046472669942,0.0046709916483468825,0.0043116892440066504,0.003364107962179651,0.004566765836853381,0.0017097274898342308,0.0008366836625762189,0.00035398156422654717,0.0005148822444557136,0.003033178622215478,0.0023211501719946435,0.005896015004922086,0.005690092021538575,0.004928633594424767,0.0036063569668779443,0.0001609006802291665,0.0002534507649644128,0.00010745229140171251}, + {0.0031526436011172694,0.003266036875982244,0.003247724842348477,0.0036597811778952944,0.003419020752841169,0.0032819553160464373,0.0030273572762882337,0.004002468693549272,0.0037233653777570975,0.0037952541572562433,0.0036149335034023023,0.003705077881217842,0.00405516333086697,0.004075730323486324,0.004114999489542175,0.0030320638161319994,0.0019306939204916632,0.00315760500162745,0.001934987912031137,0.003584534497012278,0.00327403351508347,0.003994174333611793,0.004507415432903941,0.004040486467785048,0.005251059604286057,0.004962888605217239,0.004134304048648926,0.003986555160903981,0.002518410088790003,0.0022471487486580757,0.00041834187238774275,0.0007401432825336923,0.0020272350391007344,0.0026353084078603573,0.006320377920221034,0.0075310688347756975,0.005974280650168212,0.0034131625215266014,0.0002056536090256936,0.00010479184545823536,0.00018111651451441422}, + {0.0038063232454523407,0.004571586971062787,0.004474214290320729,0.0042784067241494915,0.003628308673620401,0.004254357095826322,0.004203188260925165,0.004131436889155282,0.004007676691859291,0.005334791212451073,0.0046575759919228405,0.004825137356630916,0.004415447623849713,0.004641208523029091,0.005207126261680113,0.004083812020425673,0.004683194350309401,0.0031211310154984928,0.0039019279487893044,0.00405853472765282,0.0026661650310630166,0.005120479321570656,0.00552436112408104,0.005839922881752799,0.005936868942166864,0.005921179022198128,0.0048172854863873064,0.005238369344121325,0.0021559554100521803,0.0007723234366142899,0.0013173879365819528,0.0007723234366142899,0.0021280690021401117,0.006732079369635662,0.008070259218113806,0.009536210673978477,0.007879825600757041,0.004056879700628034,0.00014893636043381646,0.00017297154867686762,0.00014727544450634798}, + {0.00536739364992821,0.004889909556729125,0.005465144852158746,0.0054751568884575715,0.0058878956803483035,0.005147694639947842,0.004092760293931878,0.004894608005465976,0.00417665875433957,0.005443624268301126,0.0056786654217411735,0.00583968028963364,0.006282578526126409,0.005743232332238154,0.005323751071892224,0.004814690688642739,0.0039190977806735725,0.004444696245369217,0.0035803546029622817,0.0035437665193438473,0.005131761802743446,0.006172333035370729,0.005236878390513264,0.007585100743744261,0.006694178066853257,0.007429579731312869,0.0059455538467691315,0.0067945867161649225,0.0044574637176361025,0.0029565763466062717,0.001542648358778859,0.0019288106187423653,0.004312321896182982,0.004575826980994337,0.010640286686026904,0.010648770466199737,0.009068441313372571,0.003930156649169805,0.0002514589583429039,0.0003091683723259004,0.00020233189188167343}, + {0.0060229245382986,0.005710277462338278,0.006870203502312998,0.006366529741287301,0.006691583673970747,0.00558301369306258,0.006207750202704811,0.0071970806208641915,0.006008975200068938,0.007025144292204754,0.007106112121789576,0.00705898127065231,0.0067331012598765,0.0072211771947834355,0.007305882103607882,0.007243097487910644,0.004429307401684408,0.004095237313622792,0.005519408311553938,0.004642185099390641,0.005204841858181114,0.007455245207055165,0.00814449129013878,0.009356050738093586,0.009520992767962581,0.008634165816753124,0.008787018015294355,0.0060504919639820225,0.004468928754792055,0.0017097274898342308,0.0008045035084956211,0.0028600362953608116,0.0050263488927517605,0.006862912384424529,0.015332886043319742,0.012634468148630817,0.012697675704091874,0.006236838603131431,0.0012721906882377332,0.0004998090827603404,0.0003104454054097399}, + {0.0073171000583563805,0.007650772645486915,0.007366713241465521,0.006965130159848783,0.006586982040069163,0.006362584176489886,0.006442143251733258,0.007571024714361362,0.006638929522858994,0.007682485613288018,0.0072884101403446235,0.0074541192795336,0.009251938294110997,0.008001947867248848,0.007421618670998685,0.006512847791305734,0.0067378222766060255,0.005405692699012641,0.004118829729995386,0.005695313840367076,0.005897937081414986,0.00862661166734577,0.008623189969516172,0.009877500802100037,0.011070187623557048,0.01045410011461354,0.009828155153066627,0.006441062067603535,0.007055879377044026,0.00231497181134226,0.0007723234366142899,0.0027758511558093973,0.005481164796048658,0.003962337048621349,0.010870564539189307,0.015614600474024335,0.013563172638788229,0.007500337350755046,0.0002759960528541833,0.0002534507649644128,0.0002514589583429039}, + {0.007568940613299132,0.0073871215649632185,0.007430228737462693,0.007658920187719385,0.0076223026595875374,0.006967385198579927,0.0061668734520964105,0.007243336644836572,0.006835336370758027,0.007685677969029491,0.008445127955211993,0.008710974283701784,0.008116629419321222,0.009962511614881757,0.008326496010668859,0.008749216572352338,0.00520495595567059,0.006501867766628438,0.005993522639683958,0.005832736291886948,0.006812045680902364,0.009366526525478673,0.009149538042449135,0.011433034816061496,0.011247951512162915,0.011637785828065591,0.008778799640604306,0.009750637564086593,0.004897742619289791,0.0036365396419742097,0.0015104679593273159,0.003117477117009261,0.005149006147649469,0.008302842656422046,0.012699173264312632,0.016340625312353557,0.01325966184568653,0.00541462264944352,0.0005383669104717541,0.0002517898490369443,0.0010785014407204505}, + {0.007118966700741976,0.007491200558751712,0.007702948323255699,0.007610983697889483,0.007397984136703362,0.0071571161532954465,0.0059124782482299874,0.007744248013627916,0.007178671990823606,0.0077653674159902765,0.008581851099538294,0.008274231097621612,0.00823634672543442,0.008243345931643763,0.007677820289628758,0.007126034690561506,0.006900184556103663,0.004440517173311887,0.007155958904172738,0.0050004602091949695,0.0075696051636983275,0.006918274124170046,0.007766907118670859,0.010290714141398618,0.011036652776488484,0.009757519317358784,0.008925694717205813,0.007437221404536347,0.0060541148659866125,0.0023471522107938033,0.0007401432825336923,0.004016523541285333,0.003962222951131872,0.007019519163288043,0.014840598316139946,0.01544699659880002,0.011618638306363714,0.008310904318823727,0.0013747128033794864,0.00046137356449050957,0.0010850919816207075}, + {0.006934430978913057,0.006460653710716066,0.00651314010784692,0.006873091518336975,0.006595126803475681,0.006449550675449712,0.005666599305515252,0.006986862664457425,0.006456144117861395,0.007112965007170074,0.007396450568296406,0.0075048260073338246,0.007063905865520724,0.007525737746131061,0.008014260256158104,0.0069339264165043475,0.003980360771394609,0.0035075211453244512,0.004376156374408801,0.007643923195299648,0.004747782939329382,0.008267139631936907,0.008732373083825072,0.009027446367579912,0.00945323726203386,0.009354162608670943,0.006515365217457034,0.0063402280248186,0.005155069263703206,0.0022184317600968,0.0033729204596733785,0.0037652600129256556,0.0060541148659866125,0.00744810401081416,0.014829765986368787,0.013206220053840966,0.012085608659426771,0.004471041318883919,0.0013086920700327125,0.0003898100241791102,0.0002454768147010541}, + {0.0056971229117623425,0.005315762408019852,0.006113001330262981,0.005834595846319273,0.0056619232389781195,0.0056252456207910905,0.005408171131030901,0.0052749572207701585,0.005469967400976824,0.005031387403823608,0.00592425786742292,0.006083889618131832,0.006134840472967382,0.006525676931464464,0.005563497134132968,0.00417348317713316,0.004820813627406941,0.0038824963246035095,0.0039257870739371915,0.004047949042177405,0.005138303359460096,0.005813964029625953,0.006431731639087481,0.0074142316017644615,0.007683715529112355,0.007923722865265414,0.006643845032304369,0.005948660305875997,0.003519277010465935,0.0036274585185852,0.0005686972745296223,0.0014890354136660833,0.003677248535839027,0.004014616772079682,0.010128521491953181,0.011184099332325998,0.008564199997185492,0.006127809692758591,0.0002891886175675507,0.000614202671448295,0.0002094135332653085}, + {0.002816209830262159,0.0028260628779079745,0.0033674340802105976,0.0034338561024538,0.003135224405684103,0.0025016736582694227,0.002693172176359485,0.0028081106412739952,0.002580186647059797,0.002742148823766183,0.0033000219429542674,0.0037701772137743064,0.00336778700441844,0.003626508152714935,0.0037424628225345264,0.002948096679252843,0.002108740528847887,0.0023378654289843335,0.0017692801205630385,0.0019903286392876883,0.0037323468704442567,0.003159205184025172,0.004534225601727005,0.0038647299814609853,0.004345329243206663,0.004390204820979272,0.003741599989094922,0.003399123783228087,0.0011373945171394787,0.0015145639995398398,0.0005055086643803858,0.0015777530914968683,0.001579602348097391,0.0028516929626157712,0.007223475465165934,0.006037868542333086,0.00502062863582208,0.004012655416873689,8.303633205846918e-05,0.00017841655723054128,0.00011299999798768957}, + {0.0013696771692854905,0.0015446243068976168,0.0013536441296756801,0.001711624512806536,0.0014519361353670466,0.001425184962220389,0.0013842240727600244,0.0012860967670398505,0.0018113502941713528,0.0012692587892192766,0.0016624729691712419,0.0014066402585894428,0.0016053498373189707,0.0019578452362261907,0.0016604521046803054,0.0015890815189189974,0.0012320655584007459,0.0009162345020690987,0.0024664968713553346,0.0012261923214128985,0.0019553566989790835,0.0016743855885415055,0.0019891217107680364,0.0022129334754751565,0.001993417027236179,0.0021821596047544214,0.0017122533502692229,0.0012994693423144775,0.001042611682618429,0.00037913153261409454,0.00018956574191552778,0.00037913153261409454,0.00040485251999806043,0.0007582630652281891,0.0018406948760537035,0.00338318799049855,0.0021469956700631916,0.0005055086643803858,5.7315312152477494e-05,9.777176168246124e-05,2.409038961381198e-05}, + {0.0009984579811999745,0.0008794237525596875,0.0009781940205402387,0.0010309066838620129,0.0007170692217002591,0.0012148409298268705,0.0010589330498631114,0.0007703900866569769,0.0009071052080210485,0.0008047439380324807,0.0013006027951458074,0.0010997093184068522,0.0007701966329990014,0.0010610432794610992,0.00128721215207897,0.0009990094421380008,0.0006950744550789526,0.000315942922464858,0.001293404508435434,0.0008529338396883918,0.0008214515946746206,0.0006950744550789526,0.0015113792500328937,0.0012013371564836273,0.0015107806038509905,0.001999442431170022,0.001360479458530937,0.0007098098634431758,0.000315942922464858,0.00015797143684090952,0.00012637721246909646,0.0010406498576498386,0.0009203379464133441,0.001349089124830098,0.0017000877035142478,0.0027148206074945084,0.001366650211830515,0.0005371029694550041,0.0001836924730079142,0.0001820619071575267,8.727897808169788e-05}, + {0.001494637633770775,0.001572339980950645,0.0013896588646569005,0.0012025796183279599,0.0017953495356836252,0.0016229719573214742,0.0014448560481533134,0.001125386662436474,0.0011186743571783774,0.0018905716187101397,0.0013728477837563304,0.001399499867107909,0.0014460521359976391,0.0019289306677984462,0.0013066156780996486,0.0016122264390342335,0.001612146940748508,0.0008813752023997309,0.0017100828061650183,0.000979310971454683,0.0008214515946746206,0.0012153183170326525,0.0013975026955151577,0.0021266031552551,0.0021618824046188132,0.0017786162727641051,0.0016557770453780828,0.0014995556085166688,0.00028434861739023976,0.0009458669821751266,0.00028434861739023976,0.0003475372275394763,0.0011414979536543471,0.0010151207411852508,0.0033755490062457767,0.0026810856303988067,0.0016194041706196689,0.00136265835597774,0.00012637721246909646,0.00010951830636344948,9.478288071437169e-05}, + {0.0031961200925498968,0.0027991550389350607,0.0031761551821574497,0.0032776528116783624,0.0032308548208145713,0.0023436033622989145,0.002184450281609032,0.0037696701893667017,0.0032928863695506566,0.002725474660594983,0.0032589153849305057,0.00355533671015937,0.0034296499204272287,0.0032647862128793916,0.003705145207011821,0.002999189589093348,0.0019271396256244258,0.0018008746665415531,0.001741789372455237,0.00173757355427282,0.0025273191608265726,0.004494372063160825,0.003349940036764476,0.004498021359695888,0.005087412013909489,0.004149885514280717,0.004528252708819924,0.00328653260758378,0.0026244683967284257,0.0005371029694550041,0.00037913153261409454,0.0010151207411852508,0.0029505791939025464,0.0029720048672274087,0.0061831372052628146,0.007366300236363107,0.00668138877829178,0.004437653252362637,0.0001836924730079142,0.0003190362567725962,0.00016019940460457668}, + {0.005012265657067645,0.005209699649667122,0.005508462639060216,0.005047603849592145,0.005180613232445069,0.004219906243240794,0.004672522505902498,0.005901891542677406,0.005917905309975525,0.0050219262225004455,0.005760779357277877,0.0061866688563802,0.005780673520218627,0.005899749907040738,0.005698298841973157,0.005652751142330323,0.004727577477806422,0.003289797981602166,0.003953165801733289,0.004300703000966558,0.003691720837399524,0.007645984763407773,0.006005660576741238,0.00715079274815353,0.008208554779836267,0.007899952877833464,0.006235885203163555,0.0059023287832488955,0.001958846191914644,0.0009162345020690987,0.0013881870201452628,0.0009794231122183352,0.004134816578085849,0.0034734101131607183,0.009459432204288775,0.010334896235166396,0.009500709882372563,0.006520914261437813,0.0002891886175675507,0.00022474623092023994,0.00017781923602006684}, + {0.007379368387406782,0.007451245359180369,0.007625032147041162,0.00839772657582626,0.007611631867818479,0.0067495115820417175,0.006676928442654783,0.006095621637873759,0.00730597187817272,0.007041000399997154,0.008400930916842558,0.00793283625965632,0.008227806217204717,0.009027538494772875,0.008739541819695856,0.008172762085976117,0.005898172871842851,0.006161389286841284,0.005320151677007489,0.005497796619058699,0.007028664994289167,0.00938135645606989,0.009816014537793977,0.010940851760476116,0.011651975971486232,0.01063288985580899,0.008421597742894584,0.008468498515405664,0.0036016372344776356,0.0014849316157953703,0.0008530458919198622,0.003696712366127506,0.003978919235258506,0.007117102338278614,0.013836134596770806,0.015520196590176285,0.014017764089264143,0.008252535080437062,0.0003582504647046346,0.0004202897301947728,0.0003540077857377981}, + {0.008772526381155088,0.008920580778445994,0.008424349262879912,0.009561639614981477,0.009587142905946141,0.008903703370680216,0.007749656948082763,0.011045912039423249,0.0086963305686479,0.008990701880014395,0.010429418811572291,0.010692691838986315,0.009468822957357901,0.009120995071438358,0.010900684649353527,0.0100608981662963,0.006342151844506185,0.006920602733598491,0.007123167979185709,0.006994312417897533,0.008231167224047273,0.010427232608714839,0.011861002259567877,0.012238532228751637,0.013363950915145284,0.013743398641952438,0.012197144156457446,0.009412111849461795,0.005246682011282765,0.0016744976088532099,0.004478542755975978,0.0023360160940900446,0.007091349392583787,0.008286091710355853,0.01579246695652925,0.021929782795323215,0.016193077307674473,0.010409153975829153,0.0004453089566999116,0.0007138254663975126,0.00031066692598467996}, + {0.010065385320559537,0.009502874403879364,0.010719745346522626,0.01033537233955893,0.010723764430538263,0.009057669868780012,0.00935131975127134,0.009445036106653225,0.009770484905943356,0.010214421720424863,0.010675268464698125,0.011103218499140479,0.011730368430034771,0.011156642551667552,0.010655069877526424,0.01040743753556917,0.006796763995947392,0.0063585477636773444,0.00928141184965102,0.007169029173091185,0.01073869573231467,0.009660651116294248,0.01160618736794726,0.014119738708499408,0.014836114624445333,0.013807357843439446,0.011925238078953624,0.009818622322469673,0.010075888808724925,0.0053947764769141935,0.002990030422962177,0.002620364598857713,0.006798793611272356,0.0116411072730143,0.019086478425568636,0.021577388576052372,0.018071252373245188,0.009984156140340204,0.00048685556423459303,0.0004717317459163665,0.0004826128852677565}, + {0.009077851592678985,0.009249200511404626,0.00960895916278041,0.009902547536484455,0.009765121499893503,0.008388463013991695,0.008878104603478919,0.009370873523029443,0.008918743000916121,0.008841245422047967,0.009945036961165814,0.009898167903652662,0.00989501808521066,0.010446672348613703,0.011234536495738617,0.01040918898518786,0.006357937879328686,0.0073543794262603745,0.008362137036221722,0.007911497390027833,0.008916245712834985,0.011531071124092431,0.010892962155765157,0.013413661434113386,0.012966652209634296,0.013357554133765156,0.012177210141989678,0.010881024560683461,0.006143744600166308,0.0032563533719950767,0.002020073043343862,0.003797559952620274,0.005908312516831305,0.009699695296063168,0.019907539129581386,0.019322190842744977,0.016085224633373436,0.012419764229816343,0.0012666498000241007,0.0005678728773066481,0.0012623556097816726}, + {0.007131265078332575,0.007476484782084994,0.007732687280147366,0.007613386045673793,0.008012456599340877,0.006533205497416443,0.005799344457491148,0.006946977211345354,0.006598567542516637,0.006831087983069151,0.008126149988603781,0.008974674543804326,0.008447640658586596,0.008428434914664646,0.008995416766753245,0.007346722295921624,0.00456524318287427,0.006010898146640943,0.0053704692737938575,0.006161277266529579,0.007333750506436404,0.008948943598657812,0.008702298155646672,0.010532089643067396,0.011539030588820835,0.010399921334009658,0.009613904998061891,0.009233068062802073,0.005509492822413867,0.003783990721472632,0.001798912504307508,0.0024307986057998734,0.005313974015788689,0.006161066794818121,0.014264970814262897,0.01638576507193821,0.011894992197302051,0.009524401576038267,0.0004969714801892769,0.0005732056464035096,0.0004327495206069325}, + {0.006312213398612722,0.005699407204587343,0.006021127939751698,0.006000041134786325,0.00663111533087817,0.0050666428950586085,0.00579830654742291,0.006346671394421614,0.006246856188658043,0.005761265664230507,0.0066810875829078145,0.006638240998436833,0.006897591829931515,0.007278947917559684,0.006943622023207182,0.00588376861105393,0.0035529662182711827,0.004519407868882014,0.004828366146500562,0.004447522634258991,0.004380344473306279,0.0063852166478920456,0.007142773315281742,0.008615454635947133,0.00844884762485258,0.009450218286492416,0.006838485676920889,0.005493640249767454,0.0023342220325477353,0.001049739799514428,0.0015721025745323582,0.001090114413759539,0.003838569729550517,0.004236826543642222,0.00893363465272815,0.012348296841235822,0.009580231309325471,0.00945336156654296,0.0002730329408703342,0.0018214326880566288,0.00023474213336212172}, + {0.00017079473661039653,0.0006872250595383097,0.00026432762525802387,0.0008765067225491716,0.00017621848225746314,0.0002051634550246243,0.00010310615832121418,0.0005335427984396694,0.00014948665662182822,0.00020869175923230493,0.00018190145020736143,0.00038201041935520324,0.001681936758896409,0.00030242562514870645,0.0011059634702155032,0.0007661511920641312,0.0006943446239095621,0.0004490462082613075,0.0005147843864087292,0.0005205487814996215,0.0008399736430205473,0.0003617638555163894,0.001016964692600152,0.00043074756480765436,0.0003043793116221499,0.0008773916362369032,0.0006734764946868207,0.0009911390104318828,0.00021764735940275543,0.00017935658267985145,0.00020187300811567337,0.0,0.0001314764178654605,0.0005623218283887668,0.001036699255968005,0.0007462940523726716,0.0014463431939480851,0.0003970038389518234,0.0015342351265866974,0.004479074496945073,0.003227462376596984}, + {0.0010136738562570482,0.000458799455775105,0.0,0.0,0.0006772104347500849,0.000458799455775105,0.00034958041574926054,0.0007583660493230149,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0004473049912123029,0.000723324066217023,0.0006489689262926981,0.0009142092951573416,0.0007104616564708312,0.0011181607325861506,0.0005180046735995988,0.0,0.0006297405765274397,0.0,0.0004087856335737544,0.0009997504308532548,0.0004405682421523016,0.00021222560479551634,0.00012112382865105482,0.0001909632696973771,0.000497689612449363,0.0007670365875419406,0.000986684376291307,0.002007323716450544,0.0006577895328853571,0.0007074887192285686,0.005504622400618782,0.010300855350060121,0.004718815086922501}, + {0.0001224779358382718,0.0002688002180083156,0.0002597917179029967,0.0002888352967829299,0.00016884109092748685,0.0003426383286815354,0.00010911204776414604,0.00041385720529675676,0.0005583792978499352,0.0003298156219780889,0.0002617454667166899,0.00046787772539472005,0.00028601120650728574,0.0005150475907912159,0.0002932727011559685,0.0007954338696603593,0.0018460917201685927,0.0006848943038314472,0.0010635950454651096,0.0006068586263488878,0.0006539699996592257,0.0005448063731886889,0.0007801090970134491,0.0002144774369765989,0.0009445214234647292,0.0003276414195701963,0.0007766033168767358,0.0006012980199950691,0.0001697672769390647,0.0,0.0002826222158258124,9.652351743705465e-05,0.0003285520489957542,0.000608118197241117,0.000859662644131814,0.00048011509024749056,0.001563294897769271,0.00030249781669714913,0.004522186242974529,0.004360170860643396,0.004318474207497303}, + {0.005999794852318289,0.005819769033204291,0.005750570848056104,0.005666876776996161,0.006067750342310735,0.005580255746552206,0.005904240333251716,0.006389063172137406,0.0066670417859027165,0.004988063903058911,0.006172288014398869,0.006716678885975002,0.006414226675403504,0.006364294444274914,0.006292085963912597,0.0057804438801208665,0.005652465766179949,0.0058274130253059145,0.0037981958287549296,0.004201346375538735,0.005615617799123288,0.004759888845528969,0.005996458132781757,0.007857872932405294,0.008306985944786054,0.007443949066910399,0.00733258823909762,0.006534874299431951,0.0030659627482355505,0.0013323621084657985,0.0015721025745323582,0.0025137132032089387,0.0037651832031803177,0.004169766806074999,0.011526215298581147,0.011872468338135008,0.01089461416575629,0.0038946493788820816,0.000298396597898203,0.0008368813719172967,0.00046399616977717755}, + {0.015236728411654061,0.013736612663262789,0.01622456972292794,0.016138643847838995,0.015661747633275977,0.014610814964627626,0.01460682713581623,0.01574864016705196,0.014142560055324214,0.01602232055913288,0.016212496802418343,0.01736626959506594,0.0182307662353076,0.018330434672112875,0.016926315750708115,0.01622695150528365,0.011757915797285079,0.014081397343653247,0.008892901579738247,0.014444625502368644,0.012750764054223086,0.018534294985028513,0.019079517190771823,0.021153466933667053,0.022070249341872458,0.02230149318670269,0.019264445539479827,0.01879363042386894,0.010917105912149545,0.006894029561832227,0.004958555676899925,0.0060967962808845646,0.009702987219028871,0.01588326432114137,0.023882919091915582,0.03610173017799343,0.02438156312589185,0.014788578979429486,0.0008780948858191507,0.0010259607346607517,0.0018699426379323182}, + {0.018342564083663578,0.019968982717255543,0.019569450983486423,0.020161729533801118,0.019782008146054526,0.018850028108526335,0.016182251237335372,0.018511790924511853,0.018457023860682657,0.020237215110253722,0.020678753397476993,0.022082424931385916,0.021263673258536633,0.02169769993048485,0.021990776067446018,0.02142340791128722,0.015268243331969938,0.015131136342749655,0.014057484855272511,0.014670711268758978,0.015302498144742702,0.0174339818811212,0.023301538540811417,0.026739040480536005,0.027998051849783108,0.02723162080925945,0.023747402163879546,0.020277251403963595,0.01587802981817311,0.0090391283086976,0.006651783047742548,0.007058035214358164,0.012620589816425724,0.01524479570174762,0.03196740177975093,0.043326626482293566,0.03426708071820075,0.017157545203406618,0.00343141052769411,0.0012343614188011483,0.0007993630493805253}, + {0.015114724186828408,0.015165863710007957,0.015785120757629584,0.016859466453813497,0.015578720656762341,0.0149757520158181,0.012801142572272734,0.015825402333284968,0.016612183463252512,0.015120858667505482,0.016064774500082868,0.0184658900295319,0.01800007752655297,0.01755619955588337,0.017295877986648275,0.01539482461641176,0.0112455625728669,0.013908981144843928,0.011406328071672757,0.008685785212490688,0.012004841678267415,0.018189761204902368,0.018705030305993495,0.0223884001126104,0.023903529855959227,0.022243462880172038,0.021053626099134155,0.018092987587619024,0.007673912242906852,0.010326101873606929,0.004072820891116284,0.005700800239797163,0.010381461554624829,0.01727534518639842,0.02913412309004072,0.035095004411939267,0.025327970159507697,0.014535318613317047,0.0007733026092244601,0.0010611952898766635,0.00294928027194246} + }; +} + + + // clang-format on + +protected: + virtual void SetUp() + { + using FenestrationCommon::MaterialType; + using FenestrationCommon::WavelengthRange; + using SingleLayerOptics::BSDFHemisphere; + + // Create material from samples + auto thickness = 3.048e-3; // [m] + auto aMaterial_102 = SingleLayerOptics::Material::nBandMaterial( + loadSampleData_NFRC_102(), thickness, MaterialType::Monolithic); + + const auto aBSDF = BSDFHemisphere::create(SingleLayerOptics::BSDFBasis::Quarter); + auto tfSolar = TransmittanceFrontSolar(); + auto tbSolar = TransmittanceBackSolar(); + auto rfSolar = ReflectanceFrontSolar(); + auto rbSolar = ReflectanceBackSolar(); + auto tfVisible = TransmittanceFrontVisible(); + auto tbVisible = TransmittanceBackVisible(); + auto rfVisible = ReflectanceFrontVisible(); + auto rbVisible = ReflectanceBackVisible(); + + auto nirRatio{0.499}; + const auto aBSDFMaterial = SingleLayerOptics::Material::dualBandBSDFMaterial(tfSolar, + tbSolar, + rfSolar, + rbSolar, + tfVisible, + tbVisible, + rfVisible, + rbVisible, + aBSDF, + nirRatio); + + auto Layer_Glass = + SingleLayerOptics::CBSDFLayerMaker::getSpecularLayer(aMaterial_102, aBSDF); + + auto Layer_BSDF = + SingleLayerOptics::CBSDFLayerMaker::getPreLoadedBSDFLayer(aBSDFMaterial, aBSDF); + + m_Layer = CMultiPaneBSDF::create({Layer_Glass, Layer_BSDF}); + + const MultiLayerOptics::CalculationProperties input{loadSolarRadiationFile(), + loadSolarRadiationFile().getXArray()}; + m_Layer->setCalculationProperties(input); + } + +public: + CMultiPaneBSDF & getLayer() + { + return *m_Layer; + } +}; + + +TEST_F(MultiPaneBSDF_102_XMLLayer_QuarterBasis, TestBSDFMatrixAsInput) +{ + using FenestrationCommon::Side; + using FenestrationCommon::PropertySimple; + using FenestrationCommon::ScatteringSimple; + + SCOPED_TRACE("Begin Test: Specular layer - BSDF."); + + const double minLambda = 0.3; + const double maxLambda = 2.5; + + CMultiPaneBSDF & aLayer = getLayer(); + + double theta = 0; + double phi = 0; + + double tauHem = aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::T, theta, phi); + EXPECT_NEAR(0.6627899141282233, tauHem, 1e-6); + + double rhoFrontHem = + aLayer.DirHem(minLambda, maxLambda, Side::Front, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.081885831908466211, rhoFrontHem, 1e-6); + + double rhoBackHem = + aLayer.DirHem(minLambda, maxLambda, Side::Back, PropertySimple::R, theta, phi); + EXPECT_NEAR(0.054989419719445154, rhoBackHem, 1e-6); + + double abs1 = aLayer.Abs(minLambda, maxLambda, Side::Front, 1, theta, phi); + EXPECT_NEAR(0.092253368173093472, abs1, 1e-6); + + double abs2 = aLayer.Abs(minLambda, maxLambda, Side::Front, 2, theta, phi); + EXPECT_NEAR(0.16307088579021706, abs2, 1e-6); + + auto absHeatDirect = aLayer.getAbsorptanceLayersHeat( + minLambda, maxLambda, Side::Front, ScatteringSimple::Direct, 0, 0); + EXPECT_NEAR(0.092253368173093472, absHeatDirect[0], 1e-6); + EXPECT_NEAR(0.16307088579021706, absHeatDirect[1], 1e-6); + + auto absHeatDiffuse = aLayer.getAbsorptanceLayersHeat( + minLambda, maxLambda, Side::Front, ScatteringSimple::Diffuse, 0, 0); + EXPECT_NEAR(0.10244998494705279, absHeatDiffuse[0], 1e-6); + EXPECT_NEAR(0.15613080587261871, absHeatDiffuse[1], 1e-6); +} From 5d0a32607d567fc49909523f5a4301bf1caf5c91 Mon Sep 17 00:00:00 2001 From: vidanovic Date: Sat, 13 Aug 2022 14:48:01 -0700 Subject: [PATCH 81/81] Speed up for XML layers --- src/SingleLayerOptics/src/MaterialDescription.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/SingleLayerOptics/src/MaterialDescription.cpp b/src/SingleLayerOptics/src/MaterialDescription.cpp index f2492ad1..3f7e4461 100644 --- a/src/SingleLayerOptics/src/MaterialDescription.cpp +++ b/src/SingleLayerOptics/src/MaterialDescription.cpp @@ -382,8 +382,12 @@ namespace SingleLayerOptics const CBeamDirection & t_IncomingDirection, const CBeamDirection & t_OutgoingDirection) const { - return getBandProperties( - t_Property, t_Side, t_IncomingDirection, t_OutgoingDirection)[wavelengthIndex]; + if(m_MaterialScaledRange == nullptr) + { + m_RangeCreator(); + } + return getMaterialFromWavelength(m_Wavelengths[wavelengthIndex])->getProperty( + t_Property, t_Side, t_IncomingDirection, t_OutgoingDirection); } std::vector IMaterialDualBand::calculateBandWavelengths()