浏览代码

new way to package cl sources

Nicolas Winkler 4 年之前
父节点
当前提交
fddc6f3c6b

+ 6 - 2
libalmond/src/MandelVideoGenerator.cpp

@@ -20,8 +20,12 @@ void MandelVideoGenerator::addProgressCallback(ProgressCallback pc)
 
 void MandelVideoGenerator::generate(mnd::MandelGenerator& gen)
 {
-    const long width = evi.mi.bWidth;
-    const long height = evi.mi.bHeight;
+    long width = evi.mi.bWidth;
+    long height = evi.mi.bHeight;
+
+    if (width % 2) width++; // round up to multiple of 2
+    if (height % 2) height++; // round up to multiple of 2
+
     VideoStream vs(width, height, evi.path, evi.bitrate, evi.fps, evi.preset.c_str());
 
     mnd::Real x = evi.end.x + evi.end.width / 2;

+ 2 - 2
libalmond/src/Serialize.cpp

@@ -202,8 +202,8 @@ mnd::MandelInfo alm::deserialize<mnd::MandelInfo>(XMLElement* elem)
     XMLElement* bWidth = elem->FirstChildElement("width");
     XMLElement* bHeight = elem->FirstChildElement("height");
     if (bWidth != nullptr && bHeight != nullptr) {
-        mi.bWidth = bWidth->Int64Text(1920);
-        mi.bHeight = bHeight->Int64Text(1080);
+        mi.bWidth = long(bWidth->Int64Text(1920));
+        mi.bHeight = long(bHeight->Int64Text(1080));
     }
     else {
         mi.bWidth = 1920;

+ 22 - 3
libmandel/CMakeLists.txt

@@ -26,6 +26,7 @@ find_package(Boost 1.65 REQUIRED)
 set(CMAKE_CXX_STANDARD 17)
 
 
+
 SET(MandelSources
     src/ClGenerators.cpp
     src/CpuGenerators.cpp
@@ -35,7 +36,6 @@ SET(MandelSources
     src/MandelUtil.cpp
     src/Types.cpp
     src/Real.cpp
-    src/OpenClCode.cpp
     src/IterationGenerator.cpp
     src/IterationFormula.cpp
     src/IterationCompiler.cpp
@@ -47,6 +47,8 @@ SET(MandelSources
 )
 FILE(GLOB MandelHeaders include/*.h)
 
+FILE(GLOB MandelClSources src/opencl/*.cl src/opencl_template/*.cl)
+
 if (MANDEL_TARGET_ARCHITECTURE STREQUAL "x86_64" OR MANDEL_TARGET_ARCHITECTURE STREQUAL "x86")
     list(APPEND MandelSources src/CpuGeneratorsAVX.cpp src/CpuGeneratorsAVXFMA.cpp src/CpuGeneratorsSSE2.cpp)
     if (MANDEL_AVX512)
@@ -68,12 +70,26 @@ if(MTUNE_NATIVE_SUPPORTED AND MANDEL_BUILD_NATIVE)
 endif()
 
 
-#    message(${MandelSources})
+add_executable(resourcec resourcec/resourcec.cpp)
+add_custom_target(OpenClCode.cpp
+    BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/OpenClCode.h
+    COMMAND resourcec ARGS ${MandelClSources} -n mnd::cl_src -d ${CMAKE_CURRENT_BINARY_DIR}/OpenClCode.h -o OpenClCode.cpp
+    DEPENDS resourcec
+    SOURCES ${MandelClSources}
+    WORKING_DIRECTORY ${CMAKE_PROJECT_DIR}
+    COMMENT "Packaging Opencl Resources"
+)
 
-add_library(mandel STATIC ${MandelSources})
 
 
+if(OPENCL_FOUND AND MANDEL_OPENCL)
+    add_library(mandel STATIC ${MandelSources} OpenClCode.cpp)
+else()
+    add_library(mandel STATIC ${MandelSources})
+endif()
+
 target_include_directories(mandel PUBLIC "include")
+target_include_directories(mandel PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
 
 if(MANDEL_ASMJIT)
     add_subdirectory(asmjit)
@@ -88,6 +104,9 @@ if(OPENCL_FOUND AND MANDEL_OPENCL)
     target_include_directories(mandel SYSTEM PUBLIC "include_cl")
     link_directories(${OpenCL_LIBRARY})
     target_link_libraries(mandel PUBLIC OpenCL::OpenCL)
+
+    #add_subdirectory(resourcec)
+
 else()
 endif()
 

+ 4 - 4
libmandel/include/ClGenerators.h

@@ -71,7 +71,7 @@ class mnd::ClGeneratorFloat : public ClGenerator
 {
     bool useVec;
 public:
-    ClGeneratorFloat(MandelDevice& device, const std::string& code = getFloat_cl());
+    ClGeneratorFloat(MandelDevice& device, const std::string& code = mnd::cl_src::float_cl);
     virtual ~ClGeneratorFloat(void) = default;
 
     virtual void generate(const MandelInfo& info, float* data) override;
@@ -107,7 +107,7 @@ protected:
 class mnd::ClGeneratorDouble : public ClGenerator
 {
 public:
-    ClGeneratorDouble(mnd::MandelDevice& device, const std::string& source = getDouble_cl());
+    ClGeneratorDouble(mnd::MandelDevice& device, const std::string& source = mnd::cl_src::double_cl);
     virtual ~ClGeneratorDouble(void) = default;
 
     virtual void generate(const MandelInfo& info, float* data) override;
@@ -118,7 +118,7 @@ class mnd::ClGeneratorDoubleDouble : public ClGenerator
 {
     bool smooth;
 public:
-    ClGeneratorDoubleDouble(mnd::MandelDevice& device, const std::string& source = getDoubleDouble_cl());
+    ClGeneratorDoubleDouble(mnd::MandelDevice& device, const std::string& source = mnd::cl_src::doubledouble_cl);
     virtual ~ClGeneratorDoubleDouble(void) = default;
 
     virtual void generate(const MandelInfo& info, float* data) override;
@@ -142,7 +142,7 @@ class mnd::ClGeneratorQuadDouble : public ClGenerator
 {
     bool smooth;
 public:
-    ClGeneratorQuadDouble(mnd::MandelDevice& device);
+    ClGeneratorQuadDouble(mnd::MandelDevice& device, const std::string& source = mnd::cl_src::quaddouble_cl);
     virtual ~ClGeneratorQuadDouble(void) = default;
 
     virtual void generate(const MandelInfo& info, float* data) override;

+ 1 - 0
libmandel/include/IterationCompiler.h

@@ -38,6 +38,7 @@ namespace mnd
     std::unique_ptr<MandelGenerator> compileClFloat(const ir::Formula&, MandelDevice&);
     std::unique_ptr<MandelGenerator> compileClDouble(const ir::Formula&, MandelDevice&);
     std::unique_ptr<MandelGenerator> compileClDoubleDouble(const ir::Formula&, MandelDevice&);
+    std::unique_ptr<MandelGenerator> compileClQuadDouble(const ir::Formula&, MandelDevice&);
 #endif // WITH_OPENCL
 }
 //void squareTest();

+ 8 - 0
libmandel/include/IterationGenerator.h

@@ -20,6 +20,7 @@ namespace mnd
     class CompiledClGenerator;
     class CompiledClGeneratorDouble;
     class CompiledClGeneratorDoubleDouble;
+    class CompiledClGeneratorQuadDouble;
 
     // forward declaration
     struct ExecData;
@@ -105,6 +106,13 @@ public:
     CompiledClGeneratorDoubleDouble(MandelDevice& device, const std::string& code);
 };
 
+class mnd::CompiledClGeneratorQuadDouble : public mnd::ClGeneratorQuadDouble
+{
+public:
+    inline CompiledClGeneratorQuadDouble(MandelDevice& device, const std::string& code) :
+        ClGeneratorQuadDouble{ device, code } {}
+};
+
 #endif // WITH_OPENCL
 
 

+ 0 - 26
libmandel/include/OpenClCode.h

@@ -1,26 +0,0 @@
-#ifndef MANDEL_OPENCLCODE_H
-#define MANDEL_OPENCLCODE_H
-
-#include <string>
-
-namespace mnd
-{
-    std::string getFloat_cl();
-    std::string getDouble_cl();
-    std::string getDoubleDouble_cl();
-    std::string getDoubleFloat_cl();
-    std::string getTripleDouble_cl();
-    std::string getTripleFloat_cl();
-    std::string getQuadDouble_cl();
-    std::string getHexDouble_cl();
-    std::string getOctaDouble_cl();
-    std::string getFixed64_cl();
-    std::string getFixed128_cl();
-    std::string getFixed512_cl();
-
-
-    std::string getDoubleDouble_prelude();
-}
-
-#endif // MANDEL_OPENCLCODE_H
-

+ 99 - 0
libmandel/resourcec/resourcec.cpp

@@ -0,0 +1,99 @@
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <vector>
+#include <string>
+#include <algorithm>
+
+
+std::string mangle(std::string filename);
+void encode(std::istream& file, std::ostream& out);
+
+int main(int argc, char** argv)
+{
+    std::vector<std::string> files;
+    std::string outFile;
+    std::string headerFile;
+    std::string namespc;
+
+    std::string flag = "";
+    for (int i = 1; i < argc; i++) {
+        if (flag == "-o") {
+            outFile = argv[i];
+            flag = "";
+        }
+        else if (flag == "-d") {
+            headerFile = argv[i];
+            flag = "";
+        }
+        else if (flag == "-n") {
+            namespc = argv[i];
+            flag = "";
+        }
+        else if (argv[i][0] == '-') {
+            flag = argv[i];
+        }
+        else {
+            files.push_back(argv[i]);
+            flag = "";
+        }
+    }
+
+    std::ofstream out(outFile);
+    std::ofstream hout(headerFile);
+    std::string uh = mangle(headerFile);
+    std::string un = mangle(namespc);
+
+    std::transform(uh.begin(), uh.end(), uh.begin(), ::toupper);
+    std::transform(un.begin(), un.end(), un.begin(), ::toupper);
+
+    hout << "#include <string>\n\n";
+    hout << "#ifndef RESOURCE_" << un << "_" << uh << "\n";
+    hout << "#define RESOURCE_" << un << "_" << uh << "\n";
+
+    out << "#include <string>\n\n";
+
+    if (namespc != "") {
+        hout << "namespace " << namespc << " {\n\n";
+        out << "namespace " << namespc << " {\n\n";
+    }
+
+    for (auto&& filename : files) {
+        std::ifstream inFile(filename);
+        out << "extern const std::string " << mangle(filename) << " = \"";
+        hout << "extern const std::string " << mangle(filename) << ";\n";
+        encode(inFile, out);
+        out << "\";\n";
+    }
+
+    if (namespc != "") {
+        hout << "}\n\n";
+        out << "}\n\n";
+    }
+
+    hout << "\n#endif // RESOURCE_" << un << "_" << uh << "\n";
+}
+
+
+std::string mangle(std::string filename)
+{
+    const size_t lastDelim = filename.find_last_of("\\/");
+    if (lastDelim != std::string::npos)
+    {
+        filename.erase(0, lastDelim + 1);
+    }
+
+    std::replace(filename.begin(), filename.end(), '.', '_');
+    std::replace(filename.begin(), filename.end(), ':', '_');
+    return filename;
+}
+
+void encode(std::istream& file, std::ostream& out)
+{
+    while(true) {
+        int x = file.get();
+        if (!file) break;
+        out << "\\x" << std::hex << std::setfill('0') << std::setw(2) << x;
+    }
+    out << "\x00";
+}

+ 16 - 24
libmandel/src/ClGenerators.cpp

@@ -192,7 +192,7 @@ void ClGeneratorFloat::generate(const mnd::MandelInfo& info, float* data)
 
 std::string ClGeneratorFloat::getKernelCode(bool smooth) const
 {
-    return mnd::getFloat_cl();
+    return mnd::cl_src::float_cl;
 }
 
 
@@ -241,7 +241,7 @@ void ClGeneratorDoubleFloat::generate(const mnd::MandelInfo& info, float* data)
 
 std::string ClGeneratorDoubleFloat::getKernelCode(bool smooth) const
 {
-    return getDoubleFloat_cl();
+    return cl_src::doublefloat_cl;
 }
 
 
@@ -296,7 +296,7 @@ void ClGeneratorTripleFloat::generate(const mnd::MandelInfo& info, float* data)
 
 std::string ClGeneratorTripleFloat::getKernelCode(bool smooth) const
 {
-    return getTripleFloat_cl();
+    return cl_src::triplefloat_cl;
 }
 
 
@@ -382,7 +382,7 @@ void ClGeneratorDoubleDouble::generate(const mnd::MandelInfo& info, float* data)
 
 
 ClGeneratorTripleDouble::ClGeneratorTripleDouble(mnd::MandelDevice& device) :
-    ClGenerator{ device, getTripleDouble_cl(), mnd::Precision::TRIPLE_DOUBLE }
+    ClGenerator{ device, cl_src::tripledouble_cl, mnd::Precision::TRIPLE_DOUBLE }
 {
     kernel = Kernel(program, "iterate");
 }
@@ -434,12 +434,12 @@ void ClGeneratorTripleDouble::generate(const mnd::MandelInfo& info, float* data)
 
 std::string ClGeneratorTripleDouble::getKernelCode(bool smooth) const
 {
-    return getTripleDouble_cl();
+    return cl_src::tripledouble_cl;
 }
 
 
-ClGeneratorQuadDouble::ClGeneratorQuadDouble(mnd::MandelDevice& device) :
-    ClGenerator{ device, getQuadDouble_cl(), mnd::Precision::QUAD_DOUBLE }
+ClGeneratorQuadDouble::ClGeneratorQuadDouble(mnd::MandelDevice& device, const std::string& source) :
+    ClGenerator{ device, source, mnd::Precision::QUAD_DOUBLE }
 {
     kernel = Kernel(program, "iterate");
 }
@@ -498,12 +498,12 @@ void ClGeneratorQuadDouble::generate(const mnd::MandelInfo& info, float* data)
 
 std::string ClGeneratorQuadDouble::getKernelCode(bool smooth) const
 {
-    return getQuadDouble_cl();
+    return cl_src::quaddouble_cl;
 }
 
 
 ClGeneratorHexDouble::ClGeneratorHexDouble(mnd::MandelDevice& device) :
-    ClGenerator{ device, getHexDouble_cl(), mnd::Precision::HEX_DOUBLE }
+    ClGenerator{ device, cl_src::hexdouble_cl, mnd::Precision::HEX_DOUBLE }
 {
     kernel = Kernel(program, "iterate");
 }
@@ -552,12 +552,12 @@ void ClGeneratorHexDouble::generate(const mnd::MandelInfo& info, float* data)
 
 std::string ClGeneratorHexDouble::getKernelCode(bool smooth) const
 {
-    return getHexDouble_cl();
+    return cl_src::hexdouble_cl;
 }
 
 
 ClGeneratorOctaDouble::ClGeneratorOctaDouble(mnd::MandelDevice& device) :
-    ClGenerator{ device, getOctaDouble_cl(), mnd::Precision::OCTA_DOUBLE }
+    ClGenerator{ device, cl_src::octadouble_cl, mnd::Precision::OCTA_DOUBLE }
 {
     kernel = Kernel(program, "iterate");
 }
@@ -606,11 +606,11 @@ void ClGeneratorOctaDouble::generate(const mnd::MandelInfo& info, float* data)
 
 std::string ClGeneratorOctaDouble::getKernelCode(bool smooth) const
 {
-    return getOctaDouble_cl();
+    return cl_src::octadouble_cl;
 }
 
 ClGenerator128::ClGenerator128(mnd::MandelDevice& device) :
-    ClGenerator{ device, getFixed512_cl(), mnd::Precision::FIXED128 }
+    ClGenerator{ device, cl_src::fixed512_cl, mnd::Precision::FIXED128 }
 {
     kernel = Kernel(program, "iterate");
 }
@@ -669,12 +669,12 @@ std::string ClGenerator128::getKernelCode(bool smooth) const
         std::istreambuf_iterator<char>());
     //fprintf(stderr, "%s\n", str);
     return str;*/
-    return getFixed128_cl();
+    return cl_src::fixed128_cl;
 }
 
 
 ClGenerator64::ClGenerator64(mnd::MandelDevice& device) :
-    ClGenerator{ device, getFixed64_cl(), mnd::Precision::FIXED64 }
+    ClGenerator{ device, cl_src::fixed64_cl, mnd::Precision::FIXED64 }
 {
     kernel = Kernel(program, "iterate");
 }
@@ -713,20 +713,12 @@ void ClGenerator64::generate(const mnd::MandelInfo& info, float* data)
 
     queue.enqueueNDRangeKernel(kernel, 0, NDRange(info.bWidth * info.bHeight));
     queue.enqueueReadBuffer(buffer_A, CL_TRUE, 0, bufferSize, data);
-    //CpuGenerator<Fixed64> fx;
-    //fx.generate(info, data);
 }
 
 
 std::string ClGenerator64::getKernelCode(bool smooth) const
 {
-    /*//fprintf(stderr, "starting file read\n");
-    std::ifstream t("mandel128.cl");
-    std::string str((std::istreambuf_iterator<char>(t)),
-    std::istreambuf_iterator<char>());
-    //fprintf(stderr, "%s\n", str);
-    return str;*/
-    return getFixed64_cl();
+    return cl_src::fixed64_cl;
 }
 
 #endif // WITH_OPENCL

+ 16 - 14
libmandel/src/IterationCompiler.cpp

@@ -757,18 +757,6 @@ namespace mnd
         return code;
     }
 
-#ifdef WITH_OPENCL
-    std::unique_ptr<MandelGenerator> compileCl(const ir::Formula& formula, MandelDevice& md)
-    {
-        return std::make_unique<CompiledClGenerator>(md, compileToOpenCl(formula));
-    }
-
-    /*std::unique_ptr<MandelGenerator> compileClDouble(const ir::Formula& formula, MandelDevice& md)
-    {
-        return std::make_unique<CompiledClGeneratorDouble>(md, compileToOpenClDouble(formula));
-    }*/
-#endif
-
     std::vector<std::unique_ptr<mnd::MandelGenerator>> compileCpu(mnd::MandelContext& mndCtxt,
         const IterationFormula& z0,
         const IterationFormula& zi)
@@ -843,6 +831,14 @@ namespace mnd
             catch(const std::string& err) {
                 printf("cl error: %s", err.c_str());
             }
+            irf.clearNodeData();
+            try {
+                auto flqd = compileClQuadDouble(irf, dev);
+                vec.push_back(std::move(flqd));
+            }
+            catch(const std::string& err) {
+                printf("cl error: %s", err.c_str());
+            }
         }
 #endif // WITH_OPENCL
 
@@ -860,12 +856,18 @@ namespace mnd
         }
 
         cr.adaptiveGenerator = std::make_unique<mnd::AdaptiveGenerator>();
-        if (!cr.clGenerators.empty()) {
+        for (const auto& clGen : cr.clGenerators) {
+            cr.adaptiveGenerator->addGenerator(*clGen);
+        }
+        for (const auto& cpuGen : cr.cpuGenerators) {
+            cr.adaptiveGenerator->addGenerator(*cpuGen);
+        }
+        /*if (!cr.clGenerators.empty()) {
             cr.adaptiveGenerator->addGenerator(mnd::getPrecision<float>(), *cr.clGenerators[0]);
         }
         if (!cr.cpuGenerators.empty()) {
             cr.adaptiveGenerator->addGenerator(mnd::getPrecision<double>(), *cr.cpuGenerators[0]);
-        }
+        }*/
 
         return cr;
     }

+ 68 - 11
libmandel/src/IterationCompilerCl.cpp

@@ -165,7 +165,7 @@ namespace mnd
     struct DoubleDoubleTraits
     {
         static std::string getPrelude() {
-            return getDoubleDouble_prelude();
+            return cl_src::doubledouble_prelude_cl;
         }
 
         static std::string getEscapeCheck() {
@@ -173,14 +173,7 @@ namespace mnd
         }
 
         static std::string getPostlude() {
-            return
-                "   if (n >= max - 1) {\n"
-                "       A[index] = max;\n"
-                "   }\n"
-                "   else {\n"
-                "       A[index] = ((float) n);\n"
-                "   }\n"
-                "}\n";
+            return DoubleTraits::getPostlude();
         }
 
         static std::string getTypeName() {
@@ -192,7 +185,65 @@ namespace mnd
             return "(double2)(" + std::to_string(dd.x[0]) + ", " + std::to_string(dd.x[1]) + ")";
         }
         static std::string neg(const std::string& v) {
-            return "(-"s + v + ".s0, -" + v + ".s1)";
+            return "(double2)(-"s + v + ".s0, -" + v + ".s1)";
+        }
+        static std::string add(const std::string& a, const std::string& b) {
+            return "add("s + a + ", " + b + ")";
+        }
+        static std::string sub(const std::string& a, const std::string& b) {
+            return "add("s + a + ", " + neg(b) + ")";
+        }
+        static std::string mul(const std::string& a, const std::string& b) {
+            return "mul("s + a + ", " + b + ")";
+        }
+        static std::string div(const std::string& a, const std::string& b) {
+            return "div("s + a + ") / (" + b + ")";
+        }
+        static std::string atan2(const std::string& a, const std::string& b) {
+            return "atan2("s + a + ", " + b + ")";
+        }
+        static std::string pow(const std::string& a, const std::string& b) {
+            return "pow("s + a + ", " + b + ")";
+        }
+        static std::string cos(const std::string& x) {
+            return "cos("s + x + ")";
+        }
+        static std::string sin(const std::string& x) {
+            return "sin("s + x + ")";
+        }
+        static std::string exp(const std::string& x) {
+            return "exp("s + x + ")";
+        }
+        static std::string ln(const std::string& x) {
+            return "log("s + x + ")";
+        }
+    };
+
+    struct QuadDoubleTraits
+    {
+        static std::string getPrelude() {
+            return cl_src::quaddouble_prelude_cl;
+        }
+
+        static std::string getEscapeCheck() {
+            return DoubleDoubleTraits::getEscapeCheck();
+        }
+
+        static std::string getPostlude() {
+            return DoubleDoubleTraits::getPostlude();
+        }
+
+        static std::string getTypeName() {
+            return "double4";
+        }
+
+        static std::string constant(const mnd::Real& v) {
+            mnd::QuadDouble dd = mnd::convert<mnd::QuadDouble>(v);
+            return "(double4)(" + std::to_string(dd.x[0]) + ", " + std::to_string(dd.x[1]) +
+                           ", " + std::to_string(dd.x[2]) + ", " + std::to_string(dd.x[3]) + ")";
+        }
+        static std::string neg(const std::string& v) {
+            return "(double4)(-"s + v + ".s0, -" + v + ".s1, -" + v + ".s2, -" + v + ".s3)";
         }
         static std::string add(const std::string& a, const std::string& b) {
             return "add("s + a + ", " + b + ")";
@@ -348,9 +399,15 @@ namespace mnd
     {
         ClTranspiler<DoubleDoubleTraits> clt;
         std::string code = clt.compile(formula);
-        printf("doubledouble cl code: %s", code.c_str());
         return std::make_unique<CompiledClGeneratorDoubleDouble>(md, code);
     }
+
+    std::unique_ptr<MandelGenerator> compileClQuadDouble(const ir::Formula& formula, MandelDevice& md)
+    {
+        ClTranspiler<QuadDoubleTraits> clt;
+        std::string code = clt.compile(formula);
+        return std::make_unique<CompiledClGeneratorQuadDouble>(md, code);
+    }
 }
 
 #endif

+ 1 - 1
libmandel/src/IterationGenerator.cpp

@@ -206,7 +206,7 @@ void CompiledGeneratorVec::generate(const mnd::MandelInfo& info, float* data)
             double x = mnd::convert<double>(info.view.x + info.view.width * j / info.bWidth);
             float result[8];
             IterFunc iterFunc = asmjit::ptr_as_func<IterFunc>(this->execData->iterationFunc);
-            int k = iterFunc(x, y, dx, info.maxIter-1, result);
+            int k = iterFunc(float(x),float(y), float(dx), info.maxIter-1, result);
 
             for (int k = 0; k < 8 && j + k < info.bWidth; k++)
                 data[i * info.bWidth + j + k] = result[k];

+ 0 - 74
libmandel/src/OpenClCode.cpp

@@ -1,74 +0,0 @@
-#include "OpenClCode.h"
-
-#include "opencl/float.h"
-#include "opencl/double.h"
-#include "opencl/doublefloat.h"
-#include "opencl/doubledouble.h"
-#include "opencl/tripledouble.h"
-#include "opencl/triplefloat.h"
-#include "opencl/quaddouble.h"
-#include "opencl/hexdouble.h"
-#include "opencl/octadouble.h"
-
-#include "opencl/fixed64.h"
-#include "opencl/fixed128.h"
-#include "opencl/fixed512.h"
-
-#include "opencl_template/doubledouble_prelude.h"
-
-namespace mnd
-{
-    std::string getFloat_cl() {
-        return std::string{ (char*) float_cl, float_cl_len };
-    }
-
-    std::string getDouble_cl() {
-        return std::string{ (char*) double_cl, double_cl_len };
-    }
-
-    std::string getDoubleFloat_cl() {
-        return std::string{ (char*) doublefloat_cl, doublefloat_cl_len };
-    }
-
-    std::string getDoubleDouble_cl() {
-        return std::string{ (char*) doubledouble_cl, doubledouble_cl_len };
-    }
-
-    std::string getTripleDouble_cl() {
-        return std::string{ (char*) tripledouble_cl, tripledouble_cl_len };
-    }
-
-    std::string getTripleFloat_cl() {
-        return std::string{ (char*) triplefloat_cl, triplefloat_cl_len };
-    }
-
-    std::string getQuadDouble_cl() {
-        return std::string{ (char*) quaddouble_cl, quaddouble_cl_len };
-    }
-
-    std::string getHexDouble_cl() {
-        return std::string{ (char*) hexdouble_cl, hexdouble_cl_len };
-    }
-
-    std::string getOctaDouble_cl() {
-        return std::string{ (char*) octadouble_cl, octadouble_cl_len };
-    }
-
-    std::string getFixed64_cl() {
-        return std::string{ (char*) fixed64_cl, fixed64_cl_len };
-    }
-
-    std::string getFixed128_cl() {
-        return std::string{ (char*) fixed128_cl, fixed128_cl_len };
-    }
-
-    std::string getFixed512_cl() {
-        return std::string{ (char*) fixed512_cl, fixed512_cl_len };
-    }
-
-    std::string getDoubleDouble_prelude() {
-        return std::string{ (char*) doubledouble_prelude_cl, doubledouble_prelude_cl_len };
-    }
-}
-
-

+ 0 - 83
libmandel/src/opencl/double.h

@@ -1,83 +0,0 @@
-unsigned char double_cl[] = {
-  0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
-  0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
-  0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x5f, 0x5f,
-  0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
-  0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c,
-  0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20,
-  0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x78, 0x6c, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x79, 0x74, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x58, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x75, 0x6c, 0x69,
-  0x61, 0x59, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74,
-  0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20,
-  0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69,
-  0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20,
-  0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2a,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58,
-  0x20, 0x2b, 0x20, 0x78, 0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
-  0x20, 0x2b, 0x20, 0x79, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x6a, 0x75,
-  0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x6a,
-  0x75, 0x6c, 0x69, 0x61, 0x58, 0x20, 0x3a, 0x20, 0x61, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x62, 0x20,
-  0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30,
-  0x20, 0x3f, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x59, 0x20, 0x3a, 0x20,
-  0x62, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e,
-  0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69,
-  0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x49,
-  0x74, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2a, 0x20,
-  0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x61, 0x20, 0x3d, 0x20, 0x61, 0x61, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x20,
-  0x2b, 0x20, 0x63, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x20, 0x2b, 0x20, 0x61, 0x62,
-  0x20, 0x2b, 0x20, 0x63, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x20, 0x2b, 0x20, 0x62,
-  0x62, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61,
-  0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b,
-  0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x2f, 0x2f, 0x20, 0x4e,
-  0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28,
-  0x6c, 0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29,
-  0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78,
-  0x49, 0x74, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d,
-  0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b,
-  0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20,
-  0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x29, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x29, 0x29, 0x20, 0x2f, 0x20,
-  0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30,
-  0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65,
-  0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
-  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d
-};
-unsigned int double_cl_len = 956;

+ 0 - 226
libmandel/src/opencl/doubledouble.h

@@ -1,226 +0,0 @@
-unsigned char doubledouble_cl[] = {
-  0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
-  0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
-  0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
-  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
-  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
-  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
-  0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
-  0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
-  0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20,
-  0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
-  0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x61,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
-  0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28,
-  0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e,
-  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28,
-  0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65,
-  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x6d, 0x75, 0x6c,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x3d, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20,
-  0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e,
-  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x73, 0x71, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x61,
-  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a,
-  0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x31,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x3d, 0x20, 0x65, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
-  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61,
-  0x64, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x2e, 0x73,
-  0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20,
-  0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-  0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x65, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x73, 0x65, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
-  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73,
-  0x31, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x5f,
-  0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
-  0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c,
-  0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20,
-  0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79,
-  0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x32,
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a,
-  0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x6a, 0x79, 0x32, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20,
-  0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69,
-  0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
-  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x79, 0x31, 0x2c, 0x20, 0x79, 0x32,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77, 0x32, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c,
-  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c,
-  0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x78, 0x29, 0x2c, 0x20, 0x78, 0x6c,
-  0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b,
-  0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28,
-  0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x70, 0x69,
-  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x79, 0x29, 0x2c,
-  0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70,
-  0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20,
-  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f,
-  0x20, 0x28, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x20,
-  0x28, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78, 0x32, 0x29, 0x29, 0x20,
-  0x3a, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6a, 0x75,
-  0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x28,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x20, 0x28, 0x6a,
-  0x79, 0x31, 0x2c, 0x20, 0x6a, 0x79, 0x32, 0x29, 0x29, 0x20, 0x3a, 0x20,
-  0x62, 0x3b, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d,
-  0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61,
-  0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x62,
-  0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x62, 0x2c, 0x20, 0x62, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x2d, 0x62,
-  0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61,
-  0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61,
-  0x61, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c,
-  0x20, 0x63, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64,
-  0x64, 0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63,
-  0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20,
-  0x62, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20,
-  0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20,
-  0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c,
-  0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20,
-  0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78,
-  0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d,
-  0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20,
-  0x21, 0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c,
-  0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20,
-  0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73,
-  0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x2f, 0x20,
-  0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30,
-  0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x20, 0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20,
-  0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a,
-  0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28,
-  0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
-  0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20,
-  0x3d, 0x20, 0x35, 0x3b, 0x0a, 0x7d, 0x0a
-};
-unsigned int doubledouble_cl_len = 2671;

+ 0 - 265
libmandel/src/opencl/doublefloat.h

@@ -1,265 +0,0 @@
-unsigned char doublefloat_cl[] = {
-  0x2f, 0x2f, 0x20, 0x63, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a,
-  0x20, 0x47, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x75, 0x6d, 0x65, 0x20, 0x64,
-  0x61, 0x20, 0x47, 0x72, 0x61, 0xc3, 0xa7, 0x63, 0x61, 0x2c, 0x20, 0x44,
-  0x61, 0x76, 0x69, 0x64, 0x20, 0x44, 0x65, 0x66, 0x6f, 0x75, 0x72, 0x2e,
-  0x20, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74,
-  0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x2d, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61,
-  0x74, 0x6f, 0x72, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x67, 0x72, 0x61, 0x70,
-  0x68, 0x69, 0x63, 0x73, 0x20, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72,
-  0x65, 0x2e, 0x0a, 0x2f, 0x2f, 0x20, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x4e,
-  0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x43,
-  0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x72, 0x73, 0x20, 0x37, 0x2c, 0x20,
-  0x4a, 0x75, 0x6c, 0x20, 0x32, 0x30, 0x30, 0x36, 0x2c, 0x20, 0x4e, 0x61,
-  0x6e, 0x63, 0x79, 0x2c, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x2e,
-  0x20, 0x70, 0x70, 0x2e, 0x32, 0x33, 0x2d, 0x33, 0x32, 0x2e, 0x20, 0x66,
-  0x66, 0x68, 0x61, 0x6c, 0x2d, 0x30, 0x30, 0x30, 0x32, 0x31, 0x34, 0x34,
-  0x33, 0x0a, 0x2f, 0x2f, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f,
-  0x2f, 0x68, 0x61, 0x6c, 0x2e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65,
-  0x73, 0x2d, 0x6f, 0x75, 0x76, 0x65, 0x72, 0x74, 0x65, 0x73, 0x2e, 0x66,
-  0x72, 0x2f, 0x68, 0x61, 0x6c, 0x2d, 0x30, 0x30, 0x30, 0x32, 0x31, 0x34,
-  0x34, 0x33, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x0a,
-  0x2f, 0x2f, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x6d,
-  0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69,
-  0x6f, 0x6e, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6d,
-  0x61, 0x0a, 0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50,
-  0x45, 0x4e, 0x43, 0x4c, 0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54,
-  0x52, 0x41, 0x43, 0x54, 0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x76, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20,
-  0x2d, 0x20, 0x76, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d,
-  0x20, 0x76, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29,
-  0x28, 0x73, 0x2c, 0x20, 0x72, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x20, 0x3d,
-  0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x73, 0x2c,
-  0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x28, 0x34,
-  0x30, 0x39, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x61,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x61, 0x62, 0x69, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x20, 0x2d, 0x20, 0x61,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x61, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x63, 0x20, 0x2d, 0x20, 0x61, 0x62,
-  0x69, 0x67, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x61, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2d, 0x20,
-  0x61, 0x68, 0x69, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29,
-  0x28, 0x61, 0x68, 0x69, 0x2c, 0x20, 0x61, 0x6c, 0x6f, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20, 0x46, 0x50, 0x5f,
-  0x46, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4d, 0x41, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61,
-  0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28,
-  0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65, 0x29,
-  0x3b, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x32, 0x20, 0x61, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x70,
-  0x6c, 0x69, 0x74, 0x28, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62, 0x65, 0x78, 0x20, 0x3d,
-  0x20, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x28, 0x62, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x72, 0x72,
-  0x78, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x65, 0x78,
-  0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x65, 0x78, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x65, 0x72, 0x72, 0x79, 0x20, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x78,
-  0x20, 0x2d, 0x20, 0x28, 0x61, 0x65, 0x78, 0x2e, 0x73, 0x31, 0x20, 0x2a,
-  0x20, 0x62, 0x65, 0x78, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x72, 0x72, 0x7a,
-  0x20, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x79, 0x20, 0x2d, 0x20, 0x28, 0x61,
-  0x65, 0x78, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x65, 0x78, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x65, 0x78, 0x2e,
-  0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x65, 0x78, 0x2e, 0x73, 0x31, 0x29,
-  0x20, 0x2d, 0x20, 0x65, 0x72, 0x72, 0x7a, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x32, 0x29, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x3b, 0x0a,
-  0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x64, 0x64, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73,
-  0x65, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73, 0x31,
-  0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x65, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x73, 0x65, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d,
-  0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x6d, 0x75, 0x6c,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x28,
-  0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x31,
-  0x29, 0x20, 0x2b, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20,
-  0x62, 0x2e, 0x73, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75,
-  0x6d, 0x28, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31,
-  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x20, 0x73, 0x71, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x61, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x61, 0x2e,
-  0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x65,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x29,
-  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
-  0x6d, 0x75, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20,
-  0x2b, 0x3d, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
-  0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75,
-  0x6d, 0x28, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31,
-  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e,
-  0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72,
-  0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63,
-  0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64,
-  0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x31, 0x2c, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x79, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x79, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x77,
-  0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x77, 0x32,
-  0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x68, 0x31, 0x2c,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a,
-  0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x6a, 0x78, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a,
-  0x78, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x79,
-  0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x79, 0x32,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f,
-  0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78,
-  0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77,
-  0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x78, 0x6c,
-  0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28,
-  0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x79, 0x74, 0x20, 0x3d,
-  0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x79, 0x31,
-  0x2c, 0x20, 0x79, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x32, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77,
-  0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32, 0x29, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c,
-  0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x29, 0x20, 0x70, 0x78, 0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b,
-  0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78,
-  0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c,
-  0x46, 0x6c, 0x6f, 0x61, 0x74, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x29, 0x20, 0x70, 0x79, 0x29, 0x2c, 0x20, 0x79, 0x74, 0x29, 0x3b,
-  0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79,
-  0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x63, 0x62, 0x20, 0x3d,
-  0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28,
-  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61,
-  0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28,
-  0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78, 0x32, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x6a, 0x79, 0x31,
-  0x2c, 0x20, 0x6a, 0x79, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e,
-  0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68,
-  0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78,
-  0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x61,
-  0x61, 0x20, 0x3d, 0x20, 0x73, 0x71, 0x28, 0x61, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x71, 0x28, 0x62, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75,
-  0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
-  0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x2d, 0x62, 0x62, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20,
-  0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x61, 0x2c, 0x20,
-  0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x61,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62,
-  0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61,
-  0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x62, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
-  0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e,
-  0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65,
-  0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31,
-  0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20,
-  0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c,
-  0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
-  0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20,
-  0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41,
-  0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61,
-  0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
-  0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20,
-  0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
-  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e,
-  0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x28,
-  0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61,
-  0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2a,
-  0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x29, 0x20,
-  0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30, 0x66, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73,
-  0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d,
-  0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a
-};
-unsigned int doublefloat_cl_len = 3141;

+ 0 - 226
libmandel/src/opencl/fixed128.h

@@ -1,226 +0,0 @@
-unsigned char fixed128_cl[] = {
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x64, 0x64, 0x28, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x77, 0x65,
-  0x72, 0x20, 0x3d, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x20, 0x62,
-  0x5b, 0x31, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 0x3d, 0x20,
-  0x61, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6c, 0x6f,
-  0x77, 0x65, 0x72, 0x20, 0x3c, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x29, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x70, 0x70,
-  0x65, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x75, 0x70, 0x70, 0x65, 0x72, 0x2c,
-  0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
-  0x0a, 0x0d, 0x0a, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x73, 0x75,
-  0x62, 0x28, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x2c, 0x20,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c,
-  0x6f, 0x77, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x20,
-  0x2d, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72,
-  0x20, 0x3d, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x20, 0x2d, 0x20, 0x62, 0x5b,
-  0x30, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
-  0x28, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x3e, 0x20, 0x61, 0x5b, 0x31,
-  0x5d, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x31, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x28, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x75, 0x70, 0x70,
-  0x65, 0x72, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x29, 0x3b, 0x0d,
-  0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20,
-  0x6d, 0x75, 0x6c, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x2c,
-  0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x61, 0x30,
-  0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x5f, 0x68, 0x69, 0x28, 0x61, 0x5b,
-  0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x62, 0x30, 0x20,
-  0x3d, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x5b, 0x30,
-  0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67,
-  0x20, 0x62, 0x31, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x5f, 0x68, 0x69,
-  0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20,
-  0x62, 0x32, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x5f, 0x68, 0x69, 0x28,
-  0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63,
-  0x30, 0x20, 0x3d, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x62,
-  0x5b, 0x30, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
-  0x6e, 0x67, 0x20, 0x63, 0x31, 0x20, 0x3d, 0x20, 0x61, 0x5b, 0x30, 0x5d,
-  0x20, 0x2a, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63, 0x32, 0x20, 0x3d, 0x20,
-  0x6d, 0x75, 0x6c, 0x5f, 0x68, 0x69, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c,
-  0x20, 0x62, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63, 0x33, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x5f, 0x68, 0x69, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
-  0x62, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63, 0x61, 0x72, 0x72, 0x79,
-  0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c,
-  0x6f, 0x6e, 0x67, 0x20, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x62, 0x30, 0x20,
-  0x2b, 0x20, 0x62, 0x31, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x72, 0x31, 0x20, 0x3c, 0x20, 0x62, 0x30, 0x29, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x72,
-  0x72, 0x79, 0x2b, 0x2b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c,
-  0x6f, 0x6e, 0x67, 0x20, 0x72, 0x32, 0x20, 0x3d, 0x20, 0x72, 0x31, 0x20,
-  0x2b, 0x20, 0x62, 0x32, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x72, 0x32, 0x20, 0x3c, 0x20, 0x72, 0x31, 0x29, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x72,
-  0x72, 0x79, 0x2b, 0x2b, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x61, 0x30, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x61, 0x72, 0x72, 0x79,
-  0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e,
-  0x67, 0x20, 0x6e, 0x65, 0x77, 0x55, 0x70, 0x70, 0x65, 0x72, 0x20, 0x3d,
-  0x20, 0x28, 0x61, 0x30, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20,
-  0x2b, 0x20, 0x28, 0x28, 0x72, 0x32, 0x20, 0x3e, 0x3e, 0x20, 0x34, 0x38,
-  0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x29, 0x3b,
-  0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x6c, 0x6f, 0x6e, 0x67, 0x32,
-  0x20, 0x6d, 0x75, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x28,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x6c, 0x6f, 0x6e,
-  0x67, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x20, 0x3d, 0x20, 0x61, 0x5b,
-  0x31, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63, 0x61, 0x72, 0x72, 0x79, 0x20,
-  0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x5f, 0x68, 0x69, 0x28, 0x61, 0x5b, 0x31,
-  0x5d, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x68, 0x69, 0x20, 0x3d, 0x20, 0x6d, 0x61,
-  0x64, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63,
-  0x61, 0x72, 0x72, 0x79, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x6c, 0x6f, 0x6e, 0x67,
-  0x32, 0x29, 0x28, 0x68, 0x69, 0x2c, 0x20, 0x6c, 0x6f, 0x29, 0x3b, 0x0d,
-  0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x0d, 0x0a, 0x5f, 0x5f, 0x6b, 0x65,
-  0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74,
-  0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
-  0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c,
-  0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77,
-  0x69, 0x64, 0x74, 0x68, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x78,
-  0x31, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x78, 0x32, 0x2c,
-  0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x79, 0x31, 0x2c, 0x20, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x79, 0x32, 0x2c, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e,
-  0x67, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67,
-  0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20,
-  0x70, 0x68, 0x31, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x68,
-  0x32, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x20, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e,
-  0x67, 0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67,
-  0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20,
-  0x6a, 0x79, 0x32, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20,
-  0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69,
-  0x64, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x64,
-  0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x29, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x79,
-  0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20,
-  0x77, 0x69, 0x64, 0x74, 0x68, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x78, 0x6c, 0x20,
-  0x3d, 0x20, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x78, 0x31,
-  0x2c, 0x20, 0x78, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x28,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x79, 0x31, 0x2c, 0x20, 0x79,
-  0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e,
-  0x67, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29,
-  0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77, 0x32, 0x29, 0x3b, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x70,
-  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d,
-  0x20, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x70, 0x68, 0x31,
-  0x2c, 0x20, 0x70, 0x68, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x20, 0x3d,
-  0x20, 0x61, 0x64, 0x64, 0x28, 0x78, 0x6c, 0x2c, 0x20, 0x6d, 0x75, 0x6c,
-  0x49, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x28, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x70, 0x78, 0x29,
-  0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b,
-  0x20, 0x78, 0x6c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e,
-  0x67, 0x32, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x79,
-  0x74, 0x2c, 0x20, 0x6d, 0x75, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x65,
-  0x72, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x2c, 0x20, 0x70, 0x79, 0x29, 0x29, 0x79, 0x3b, 0x20, 0x2f, 0x2f,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
-  0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x63, 0x61,
-  0x20, 0x3d, 0x20, 0x61, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c,
-  0x6f, 0x6e, 0x67, 0x32, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x62, 0x3b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x28, 0x6a, 0x75, 0x6c,
-  0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20,
-  0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x6a, 0x78, 0x31, 0x2c,
-  0x20, 0x6a, 0x78, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x6c, 0x6f, 0x6e,
-  0x67, 0x32, 0x29, 0x28, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x6a, 0x79, 0x32,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x0d,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d,
-  0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69,
-  0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x20,
-  0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x61,
-  0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x61, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c,
-  0x6f, 0x6e, 0x67, 0x32, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75,
-  0x6c, 0x28, 0x62, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20,
-  0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20,
-  0x62, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x73, 0x75, 0x62,
-  0x28, 0x61, 0x61, 0x2c, 0x20, 0x62, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x61,
-  0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28,
-  0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x62, 0x29,
-  0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x61, 0x61, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x62,
-  0x62, 0x5b, 0x30, 0x5d, 0x20, 0x3e, 0x20, 0x28, 0x31, 0x36, 0x4c, 0x4c,
-  0x20, 0x3c, 0x3c, 0x20, 0x34, 0x38, 0x29, 0x29, 0x20, 0x62, 0x72, 0x65,
-  0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
-  0x0d, 0x0a, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e,
-  0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28,
-  0x6c, 0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29,
-  0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d,
-  0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d,
-  0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b,
-  0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x61, 0x70, 0x70,
-  0x72, 0x6f, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x29, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x28,
-  0x31, 0x2e, 0x30, 0x66, 0x20, 0x2f, 0x20, 0x28, 0x31, 0x4c, 0x4c, 0x20,
-  0x3c, 0x3c, 0x20, 0x34, 0x38, 0x29, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20,
-  0x33, 0x2e, 0x35, 0x35, 0x32, 0x37, 0x31, 0x33, 0x37, 0x65, 0x2d, 0x31,
-  0x35, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62,
-  0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x29, 0x20,
-  0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x66, 0x20, 0x2f, 0x20, 0x28, 0x31,
-  0x4c, 0x4c, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x38, 0x29, 0x29, 0x3b, 0x20,
-  0x2f, 0x2f, 0x20, 0x33, 0x2e, 0x35, 0x35, 0x32, 0x37, 0x31, 0x33, 0x37,
-  0x65, 0x2d, 0x31, 0x35, 0x66, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d,
-  0x20, 0x6c, 0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x61, 0x70,
-  0x70, 0x72, 0x6f, 0x78, 0x20, 0x2a, 0x20, 0x61, 0x61, 0x70, 0x70, 0x72,
-  0x6f, 0x78, 0x20, 0x2b, 0x20, 0x62, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78,
-  0x20, 0x2a, 0x20, 0x62, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x29, 0x20,
-  0x2f, 0x20, 0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32,
-  0x2e, 0x30, 0x66, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x7d, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x0d, 0x0a, 0x7d
-};
-unsigned int fixed128_cl_len = 2668;

+ 0 - 288
libmandel/src/opencl/fixed512.h

@@ -1,288 +0,0 @@
-unsigned char fixed512_cl[] = {
-  0x0a, 0x0a, 0x2f, 0x2a, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x20, 0x61,
-  0x64, 0x64, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x20, 0x61, 0x2c,
-  0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x20, 0x62, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61,
-  0x73, 0x6b, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x30, 0x30, 0x46, 0x46, 0x46,
-  0x46, 0x46, 0x46, 0x3b, 0x0a, 0x7d, 0x2a, 0x2f, 0x0a, 0x0a, 0x0a, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x64, 0x64, 0x28, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e,
-  0x67, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c,
-  0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, 0x68, 0x61, 0x72,
-  0x20, 0x63, 0x61, 0x72, 0x72, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74,
-  0x20, 0x69, 0x20, 0x3d, 0x20, 0x31, 0x3b, 0x20, 0x69, 0x20, 0x3e, 0x3d,
-  0x20, 0x30, 0x3b, 0x20, 0x69, 0x2d, 0x2d, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x63, 0x68, 0x61, 0x72,
-  0x20, 0x74, 0x6d, 0x70, 0x63, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x72,
-  0x72, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x20, 0x3d,
-  0x20, 0x61, 0x5b, 0x69, 0x5d, 0x20, 0x2b, 0x20, 0x62, 0x5b, 0x69, 0x5d,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61,
-  0x72, 0x72, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x68, 0x61, 0x64, 0x64, 0x28,
-  0x61, 0x5b, 0x69, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x69, 0x5d, 0x29, 0x20,
-  0x3e, 0x3e, 0x20, 0x36, 0x33, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x68, 0x61,
-  0x64, 0x64, 0x28, 0x74, 0x65, 0x6d, 0x70, 0x2c, 0x20, 0x28, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x29, 0x20, 0x63, 0x61, 0x72, 0x72, 0x79, 0x29, 0x20,
-  0x3e, 0x3e, 0x20, 0x36, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x20, 0x2b, 0x3d, 0x20,
-  0x74, 0x6d, 0x70, 0x63, 0x72, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5b, 0x69, 0x5d,
-  0x20, 0x3d, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
-  0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x73, 0x75, 0x62, 0x28,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x77, 0x65,
-  0x72, 0x53, 0x75, 0x62, 0x62, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x61, 0x5b,
-  0x31, 0x5d, 0x20, 0x2d, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x75, 0x70, 0x70,
-  0x65, 0x72, 0x53, 0x75, 0x62, 0x62, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x61,
-  0x5b, 0x30, 0x5d, 0x20, 0x2d, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x20, 0x2d,
-  0x20, 0x28, 0x28, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x75, 0x62, 0x62,
-  0x65, 0x64, 0x20, 0x3e, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x29, 0x20, 0x3f,
-  0x20, 0x31, 0x20, 0x3a, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x32, 0x29, 0x28, 0x75, 0x70, 0x70, 0x65, 0x72, 0x53, 0x75,
-  0x62, 0x62, 0x65, 0x64, 0x2c, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x53,
-  0x75, 0x62, 0x62, 0x65, 0x64, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x2f,
-  0x2a, 0x0a, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x34, 0x20, 0x6d, 0x75, 0x6c,
-  0x50, 0x61, 0x72, 0x74, 0x28, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20,
-  0x61, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x34,
-  0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63, 0x61, 0x72, 0x72, 0x79,
-  0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f,
-  0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x31,
-  0x3b, 0x20, 0x69, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x2d,
-  0x2d, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72,
-  0x20, 0x3d, 0x20, 0x61, 0x5b, 0x69, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x5b,
-  0x69, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x20,
-  0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x5f, 0x68, 0x69, 0x28, 0x61, 0x5b, 0x69,
-  0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20,
-  0x63, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x2b, 0x20,
-  0x63, 0x61, 0x72, 0x72, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63, 0x63, 0x20,
-  0x3d, 0x20, 0x68, 0x61, 0x64, 0x64, 0x28, 0x6c, 0x6f, 0x77, 0x65, 0x72,
-  0x2c, 0x20, 0x63, 0x61, 0x72, 0x72, 0x79, 0x29, 0x20, 0x3e, 0x3e, 0x20,
-  0x36, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x63, 0x61, 0x72, 0x72, 0x79, 0x20, 0x3d, 0x20, 0x75, 0x70, 0x70, 0x65,
-  0x72, 0x20, 0x2b, 0x20, 0x63, 0x63, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5b, 0x69,
-  0x5d, 0x20, 0x3d, 0x20, 0x63, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
-  0x0a, 0x7d, 0x2a, 0x2f, 0x0a, 0x0a, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32,
-  0x20, 0x6d, 0x75, 0x6c, 0x75, 0x36, 0x34, 0x28, 0x75, 0x6c, 0x6f, 0x6e,
-  0x67, 0x20, 0x61, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x62,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28,
-  0x6d, 0x75, 0x6c, 0x5f, 0x68, 0x69, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29,
-  0x2c, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x6d, 0x75, 0x6c, 0x28,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x2f, 0x2f, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x20, 0x61, 0x76,
-  0x65, 0x63, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x34, 0x29,
-  0x28, 0x61, 0x5b, 0x30, 0x5d, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x32, 0x2c,
-  0x20, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x20,
-  0x3e, 0x3e, 0x20, 0x33, 0x32, 0x2c, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x75, 0x69, 0x6e, 0x74,
-  0x34, 0x20, 0x62, 0x76, 0x65, 0x63, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69,
-  0x6e, 0x74, 0x34, 0x29, 0x28, 0x62, 0x5b, 0x30, 0x5d, 0x20, 0x3e, 0x3e,
-  0x20, 0x33, 0x32, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62,
-  0x5b, 0x31, 0x5d, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x32, 0x2c, 0x20, 0x62,
-  0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x75, 0x75, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x75, 0x36, 0x34, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20,
-  0x62, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x75, 0x6c, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x75, 0x36, 0x34, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20,
-  0x62, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x6c, 0x75, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x75, 0x36, 0x34, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
-  0x62, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x6c, 0x6c, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x75, 0x36, 0x34, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
-  0x62, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x34, 0x20, 0x72, 0x65, 0x73, 0x20, 0x3d,
-  0x20, 0x28, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x34, 0x29, 0x28, 0x30, 0x2c,
-  0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20,
-  0x6c, 0x6c, 0x5b, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x73, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x3d, 0x20, 0x6c, 0x75, 0x5b,
-  0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x5b,
-  0x32, 0x5d, 0x20, 0x2b, 0x3d, 0x20, 0x75, 0x6c, 0x5b, 0x31, 0x5d, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x65, 0x73,
-  0x5b, 0x32, 0x5d, 0x20, 0x3c, 0x20, 0x75, 0x6c, 0x5b, 0x31, 0x5d, 0x29,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73,
-  0x5b, 0x31, 0x5d, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x73, 0x5b, 0x32, 0x5d, 0x20, 0x2b, 0x3d, 0x20, 0x6c, 0x6c, 0x5b,
-  0x30, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28,
-  0x72, 0x65, 0x73, 0x5b, 0x32, 0x5d, 0x20, 0x3c, 0x20, 0x6c, 0x6c, 0x5b,
-  0x30, 0x5d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x73, 0x5b, 0x31, 0x5d, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x73, 0x5b, 0x31, 0x5d, 0x20, 0x2b, 0x3d, 0x20,
-  0x75, 0x75, 0x5b, 0x31, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x72, 0x65, 0x73, 0x5b, 0x31, 0x5d, 0x20, 0x3c, 0x20,
-  0x75, 0x75, 0x5b, 0x31, 0x5d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x5b, 0x30, 0x5d, 0x2b, 0x2b, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x5b, 0x31, 0x5d, 0x20,
-  0x2b, 0x3d, 0x20, 0x75, 0x6c, 0x5b, 0x30, 0x5d, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x65, 0x73, 0x5b, 0x31, 0x5d,
-  0x20, 0x3c, 0x20, 0x75, 0x6c, 0x5b, 0x30, 0x5d, 0x29, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x5b, 0x30, 0x5d,
-  0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x5b,
-  0x31, 0x5d, 0x20, 0x2b, 0x3d, 0x20, 0x6c, 0x75, 0x5b, 0x30, 0x5d, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x72, 0x65, 0x73,
-  0x5b, 0x31, 0x5d, 0x20, 0x3c, 0x20, 0x6c, 0x75, 0x5b, 0x30, 0x5d, 0x29,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73,
-  0x5b, 0x30, 0x5d, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x73, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x3d, 0x20, 0x75, 0x75, 0x5b,
-  0x30, 0x5d, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x69, 0x6e,
-  0x74, 0x34, 0x20, 0x6e, 0x75, 0x6d, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69,
-  0x6e, 0x74, 0x34, 0x29, 0x20, 0x28, 0x72, 0x65, 0x73, 0x5b, 0x30, 0x5d,
-  0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46,
-  0x46, 0x2c, 0x20, 0x28, 0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x72,
-  0x65, 0x73, 0x5b, 0x31, 0x5d, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x32,
-  0x2c, 0x20, 0x72, 0x65, 0x73, 0x5b, 0x31, 0x5d, 0x20, 0x26, 0x20, 0x30,
-  0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x2c, 0x20, 0x28,
-  0x28, 0x6c, 0x6f, 0x6e, 0x67, 0x29, 0x20, 0x72, 0x65, 0x73, 0x5b, 0x32,
-  0x5d, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x32, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x28, 0x6e, 0x75, 0x6d, 0x5b,
-  0x30, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x32, 0x29, 0x20, 0x2b, 0x20,
-  0x6e, 0x75, 0x6d, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x28, 0x6e, 0x75, 0x6d,
-  0x5b, 0x32, 0x5d, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x32, 0x29, 0x20, 0x2b,
-  0x20, 0x6e, 0x75, 0x6d, 0x5b, 0x33, 0x5d, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76,
-  0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28,
-  0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x20, 0x78, 0x31, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e,
-  0x67, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20,
-  0x79, 0x31, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x79, 0x32,
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f,
-  0x6f, 0x74, 0x68, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67,
-  0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64,
-  0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x32, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x32, 0x29, 0x20, 0x28, 0x28, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x29, 0x20, 0x3c,
-  0x3c, 0x20, 0x33, 0x32, 0x2c, 0x20, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x70, 0x79, 0x20,
-  0x3d, 0x20, 0x28, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x20, 0x28,
-  0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64,
-  0x74, 0x68, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x32, 0x2c, 0x20, 0x30,
-  0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e,
-  0x67, 0x32, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x32, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32,
-  0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x6c, 0x6f, 0x6e, 0x67,
-  0x32, 0x29, 0x28, 0x79, 0x31, 0x2c, 0x20, 0x79, 0x32, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x70,
-  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d,
-  0x20, 0x28, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x70, 0x77,
-  0x31, 0x2c, 0x20, 0x70, 0x77, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20,
-  0x70, 0x68, 0x32, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64,
-  0x64, 0x28, 0x6d, 0x75, 0x6c, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20, 0x70, 0x78, 0x29, 0x2c, 0x20,
-  0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78,
-  0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c,
-  0x6f, 0x6e, 0x67, 0x32, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64,
-  0x28, 0x6d, 0x75, 0x6c, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63,
-  0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x70, 0x79, 0x29, 0x2c, 0x20, 0x79,
-  0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
-  0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20,
-  0x2b, 0x20, 0x79, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x32, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x63,
-  0x62, 0x20, 0x3d, 0x20, 0x62, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20,
-  0x3c, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x32, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c,
-  0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x62,
-  0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x62, 0x2c, 0x20, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75,
-  0x6c, 0x6f, 0x6e, 0x67, 0x32, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64,
-  0x64, 0x28, 0x73, 0x75, 0x62, 0x28, 0x61, 0x61, 0x2c, 0x20, 0x62, 0x62,
-  0x29, 0x2c, 0x20, 0x63, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28,
-  0x61, 0x64, 0x64, 0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c,
-  0x20, 0x63, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20,
-  0x2b, 0x20, 0x61, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x62, 0x62,
-  0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e, 0x73, 0x31, 0x20,
-  0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20,
-  0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a,
-  0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20,
-  0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20,
-  0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73,
-  0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x61, 0x70, 0x70,
-  0x72, 0x6f, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x29, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x33,
-  0x32, 0x38, 0x33, 0x30, 0x36, 0x34, 0x65, 0x2d, 0x31, 0x30, 0x66, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x61, 0x70, 0x70, 0x72,
-  0x6f, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x32, 0x2e, 0x33, 0x32,
-  0x38, 0x33, 0x30, 0x36, 0x34, 0x65, 0x2d, 0x31, 0x30, 0x66, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b,
-  0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67,
-  0x28, 0x61, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x20, 0x2a, 0x20, 0x61,
-  0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x20, 0x2b, 0x20, 0x62, 0x61, 0x70,
-  0x70, 0x72, 0x6f, 0x78, 0x20, 0x2a, 0x20, 0x62, 0x61, 0x70, 0x70, 0x72,
-  0x6f, 0x78, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c,
-  0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30, 0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41,
-  0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31,
-  0x20, 0x2d, 0x20, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20,
-  0x62, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20,
-  0x2f, 0x20, 0x28, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74,
-  0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30,
-  0x29, 0x5d, 0x20, 0x3d, 0x20, 0x35, 0x3b, 0x0a, 0x7d
-};
-unsigned int fixed512_cl_len = 3417;

+ 0 - 120
libmandel/src/opencl/fixed64.h

@@ -1,120 +0,0 @@
-unsigned char fixed64_cl[] = {
-  0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x6c, 0x6f, 0x6e,
-  0x67, 0x20, 0x61, 0x2c, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20,
-  0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x5f,
-  0x68, 0x69, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72,
-  0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75, 0x70,
-  0x70, 0x65, 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2b,
-  0x20, 0x28, 0x28, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x3e, 0x3e, 0x20,
-  0x34, 0x38, 0x29, 0x20, 0x26, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46,
-  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72,
-  0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65,
-  0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61,
-  0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20,
-  0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69,
-  0x64, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x78, 0x2c, 0x20,
-  0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x79, 0x2c, 0x20, 0x75, 0x6c, 0x6f,
-  0x6e, 0x67, 0x20, 0x70, 0x77, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67,
-  0x20, 0x70, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78,
-  0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68,
-  0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c,
-  0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61,
-  0x58, 0x2c, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6a, 0x75, 0x6c,
-  0x69, 0x61, 0x59, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67,
-  0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64,
-  0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e,
-  0x67, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x79, 0x20,
-  0x3d, 0x20, 0x28, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77,
-  0x69, 0x64, 0x74, 0x68, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x78, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x79, 0x74,
-  0x20, 0x3d, 0x20, 0x79, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
-  0x6e, 0x67, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x58, 0x20, 0x3d, 0x20, 0x70, 0x77, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x70, 0x68, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x61, 0x20,
-  0x3d, 0x20, 0x78, 0x6c, 0x20, 0x2b, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
-  0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x3b,
-  0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78,
-  0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x62,
-  0x20, 0x3d, 0x20, 0x79, 0x74, 0x20, 0x2b, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79,
-  0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63,
-  0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20,
-  0x79, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20,
-  0x63, 0x61, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x3f,
-  0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x58, 0x20, 0x3a, 0x20, 0x61, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x63, 0x62,
-  0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x3f, 0x20, 0x6a,
-  0x75, 0x6c, 0x69, 0x61, 0x59, 0x20, 0x3a, 0x20, 0x62, 0x3b, 0x0a, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20,
-  0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65,
-  0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20,
-  0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x62,
-  0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x62, 0x2c, 0x20, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c,
-  0x6f, 0x6e, 0x67, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c,
-  0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x61, 0x20, 0x2d,
-  0x20, 0x62, 0x62, 0x20, 0x2b, 0x20, 0x63, 0x61, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x62,
-  0x20, 0x2b, 0x20, 0x61, 0x62, 0x20, 0x2b, 0x20, 0x63, 0x62, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28,
-  0x61, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x20, 0x3e, 0x20, 0x28, 0x31,
-  0x36, 0x4c, 0x4c, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x38, 0x29, 0x29, 0x20,
-  0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20,
-  0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c,
-  0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20,
-  0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78,
-  0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d,
-  0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20,
-  0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x61, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x20, 0x3d, 0x20,
-  0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x61, 0x29, 0x20,
-  0x2a, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x66, 0x20, 0x2f, 0x20, 0x28, 0x31,
-  0x4c, 0x4c, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x38, 0x29, 0x29, 0x3b, 0x20,
-  0x2f, 0x2f, 0x20, 0x33, 0x2e, 0x35, 0x35, 0x32, 0x37, 0x31, 0x33, 0x37,
-  0x65, 0x2d, 0x31, 0x35, 0x66, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x62, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x20, 0x3d, 0x20, 0x28,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x62, 0x29, 0x20, 0x2a,
-  0x20, 0x28, 0x31, 0x2e, 0x30, 0x66, 0x20, 0x2f, 0x20, 0x28, 0x31, 0x4c,
-  0x4c, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x38, 0x29, 0x29, 0x3b, 0x20, 0x2f,
-  0x2f, 0x20, 0x33, 0x2e, 0x35, 0x35, 0x32, 0x37, 0x31, 0x33, 0x37, 0x65,
-  0x2d, 0x31, 0x35, 0x66, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c,
-  0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x61, 0x70, 0x70, 0x72,
-  0x6f, 0x78, 0x20, 0x2a, 0x20, 0x61, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78,
-  0x20, 0x2b, 0x20, 0x62, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x20, 0x2a,
-  0x20, 0x62, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x29, 0x20, 0x2f, 0x20,
-  0x32, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30,
-  0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
-  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d
-};
-unsigned int fixed64_cl_len = 1401;

+ 0 - 395
libmandel/src/opencl/float.h

@@ -1,395 +0,0 @@
-unsigned char float_cl[] = {
-  0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f,
-  0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f,
-  0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x6c, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x79, 0x74, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58,
-  0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x58, 0x2c, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x59, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c,
-  0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x20, 0x3d,
-  0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64,
-  0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x61, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2b, 0x20, 0x78,
-  0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x62, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2b, 0x20, 0x79, 0x74,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63,
-  0x61, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d,
-  0x20, 0x30, 0x20, 0x3f, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x58, 0x20,
-  0x3a, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61,
-  0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x6a, 0x75, 0x6c, 0x69,
-  0x61, 0x59, 0x20, 0x3a, 0x20, 0x62, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c,
-  0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x31,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2a, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x62,
-  0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20,
-  0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x61, 0x20, 0x2d, 0x20, 0x62,
-  0x62, 0x20, 0x2b, 0x20, 0x63, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x62, 0x20, 0x2b, 0x20,
-  0x61, 0x62, 0x20, 0x2b, 0x20, 0x63, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x20, 0x2b,
-  0x20, 0x62, 0x62, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72,
-  0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20,
-  0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61,
-  0x78, 0x49, 0x74, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e,
-  0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74,
-  0x65, 0x72, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
-  0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68,
-  0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f,
-  0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x29, 0x20, 0x2f, 0x20, 0x32,
-  0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30, 0x66,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d,
-  0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x5f, 0x5f,
-  0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
-  0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x32, 0x28, 0x5f, 0x5f, 0x67,
-  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a,
-  0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x78, 0x6c, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x79, 0x74, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70,
-  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d,
-  0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x58, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x59, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
-  0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x31, 0x20,
-  0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2a, 0x20, 0x32, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2a,
-  0x20, 0x32, 0x20, 0x2b, 0x20, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x78, 0x31, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x31, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x31, 0x20, 0x3d, 0x20,
-  0x69, 0x6e, 0x64, 0x65, 0x78, 0x31, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64,
-  0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78,
-  0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, 0x20, 0x25,
-  0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x79, 0x32, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x32, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x31,
-  0x20, 0x3d, 0x20, 0x78, 0x31, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2b, 0x20, 0x78, 0x6c,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62,
-  0x31, 0x20, 0x3d, 0x20, 0x79, 0x31, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2b, 0x20, 0x79,
-  0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x63, 0x61, 0x31, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20,
-  0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61,
-  0x58, 0x20, 0x3a, 0x20, 0x61, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x62, 0x31, 0x20, 0x3d, 0x20, 0x6a,
-  0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20,
-  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x59, 0x20, 0x3a, 0x20, 0x62, 0x31, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61,
-  0x32, 0x20, 0x3d, 0x20, 0x78, 0x32, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2b, 0x20, 0x78,
-  0x6c, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x62, 0x32, 0x20, 0x3d, 0x20, 0x79, 0x32, 0x20, 0x2a, 0x20, 0x70, 0x69,
-  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2b, 0x20,
-  0x79, 0x74, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x63, 0x61, 0x32, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61,
-  0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x6a, 0x75, 0x6c, 0x69,
-  0x61, 0x58, 0x20, 0x3a, 0x20, 0x61, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x63, 0x62, 0x32, 0x20, 0x3d, 0x20,
-  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f,
-  0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x59, 0x20, 0x3a, 0x20, 0x62, 0x32,
-  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20,
-  0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x6e, 0x31, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x6e, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c,
-  0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x31,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x61, 0x31, 0x20, 0x3d, 0x20, 0x61,
-  0x31, 0x20, 0x2a, 0x20, 0x61, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x61, 0x32,
-  0x20, 0x3d, 0x20, 0x61, 0x32, 0x20, 0x2a, 0x20, 0x61, 0x32, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x62, 0x62, 0x31, 0x20, 0x3d, 0x20, 0x62, 0x31, 0x20, 0x2a, 0x20,
-  0x62, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x62, 0x32, 0x20, 0x3d, 0x20, 0x62,
-  0x32, 0x20, 0x2a, 0x20, 0x62, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x62, 0x31,
-  0x20, 0x3d, 0x20, 0x61, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x31, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x61, 0x62, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x32, 0x20, 0x2a, 0x20,
-  0x62, 0x32, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x31, 0x20, 0x2b, 0x20, 0x62, 0x62,
-  0x31, 0x20, 0x3c, 0x3d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x31,
-  0x20, 0x3d, 0x20, 0x61, 0x61, 0x31, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x31,
-  0x20, 0x2b, 0x20, 0x63, 0x61, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x31, 0x20, 0x3d, 0x20,
-  0x61, 0x62, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x31, 0x20, 0x2b, 0x20,
-  0x63, 0x62, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x6e, 0x31, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x32, 0x20, 0x2b, 0x20,
-  0x62, 0x62, 0x32, 0x20, 0x3c, 0x3d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x61, 0x32, 0x20, 0x3d, 0x20, 0x61, 0x61, 0x32, 0x20, 0x2d, 0x20, 0x62,
-  0x62, 0x32, 0x20, 0x2b, 0x20, 0x63, 0x61, 0x32, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x32, 0x20,
-  0x3d, 0x20, 0x61, 0x62, 0x32, 0x20, 0x2b, 0x20, 0x61, 0x62, 0x32, 0x20,
-  0x2b, 0x20, 0x63, 0x62, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x32, 0x2b, 0x2b, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x31, 0x20,
-  0x2b, 0x20, 0x62, 0x62, 0x31, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x20, 0x26,
-  0x26, 0x20, 0x61, 0x61, 0x32, 0x20, 0x2b, 0x20, 0x62, 0x62, 0x32, 0x20,
-  0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e,
-  0x31, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72,
-  0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x31, 0x5d,
-  0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
-  0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20,
-  0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x31,
-  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x6e, 0x31, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f,
-  0x67, 0x32, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x31, 0x20, 0x2a, 0x20,
-  0x61, 0x31, 0x20, 0x2b, 0x20, 0x62, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x31,
-  0x29, 0x20, 0x2f, 0x20, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41,
-  0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x28,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
-  0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x32,
-  0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x20,
-  0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, 0x5d, 0x20,
-  0x3d, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
-  0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x30,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, 0x5d,
-  0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e,
-  0x32, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67,
-  0x32, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x32, 0x20, 0x2a, 0x20, 0x61,
-  0x32, 0x20, 0x2b, 0x20, 0x62, 0x32, 0x20, 0x2a, 0x20, 0x62, 0x32, 0x29,
-  0x20, 0x2f, 0x20, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b,
-  0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x32, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x7d,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e,
-  0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72,
-  0x61, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x34, 0x28, 0x5f, 0x5f, 0x67,
-  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a,
-  0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x78, 0x6c, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x79, 0x74, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70,
-  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d,
-  0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x58, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x59, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
-  0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x34,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x20, 0x3d,
-  0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64,
-  0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79,
-  0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77,
-  0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x34, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x34, 0x29, 0x20, 0x28, 0x78, 0x20, 0x2a, 0x20, 0x70, 0x69,
-  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2b, 0x20,
-  0x78, 0x6c, 0x2c, 0x20, 0x28, 0x78, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20,
-  0x2a, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x58, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x2c, 0x20, 0x28, 0x78, 0x20, 0x2b,
-  0x20, 0x32, 0x29, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x2c, 0x20,
-  0x28, 0x78, 0x20, 0x2b, 0x20, 0x33, 0x29, 0x20, 0x2a, 0x20, 0x70, 0x69,
-  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2b, 0x20,
-  0x78, 0x6c, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x34, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x34, 0x29, 0x20, 0x28, 0x79, 0x20, 0x2a, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2b, 0x20, 0x79,
-  0x74, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x34, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61,
-  0x20, 0x3f, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x29,
-  0x28, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x58, 0x29, 0x29, 0x20, 0x3a, 0x20,
-  0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34,
-  0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20,
-  0x3f, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x29, 0x28,
-  0x6a, 0x75, 0x6c, 0x69, 0x61, 0x59, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x62,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20,
-  0x72, 0x65, 0x73, 0x61, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x34, 0x29, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x62, 0x20, 0x3d,
-  0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x29, 0x28, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20,
-  0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x34, 0x29, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74,
-  0x68, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x34, 0x20, 0x63, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x69,
-  0x73, 0x6c, 0x65, 0x73, 0x73, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x34, 0x29, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x66, 0x29, 0x2c, 0x20, 0x28,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x29, 0x28, 0x31, 0x36, 0x2e, 0x30,
-  0x66, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d,
-  0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x34, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a,
-  0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x63, 0x6d,
-  0x70, 0x56, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61,
-  0x2c, 0x20, 0x61, 0x2c, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x61, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c, 0x20, 0x61,
-  0x2c, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28, 0x62, 0x2c, 0x20, 0x62, 0x2c,
-  0x20, 0x2d, 0x63, 0x61, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x66,
-  0x6d, 0x61, 0x28, 0x32, 0x2c, 0x20, 0x61, 0x62, 0x2c, 0x20, 0x63, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x73, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x73, 0x5f,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x28, 0x61, 0x73, 0x5f, 0x69,
-  0x6e, 0x74, 0x34, 0x28, 0x61, 0x29, 0x20, 0x26, 0x20, 0x63, 0x6d, 0x70,
-  0x29, 0x20, 0x7c, 0x20, 0x28, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x34,
-  0x28, 0x72, 0x65, 0x73, 0x61, 0x29, 0x20, 0x26, 0x20, 0x7e, 0x63, 0x6d,
-  0x70, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x73, 0x62, 0x20, 0x3d, 0x20, 0x61,
-  0x73, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x28, 0x61, 0x73,
-  0x5f, 0x69, 0x6e, 0x74, 0x34, 0x28, 0x62, 0x29, 0x20, 0x26, 0x20, 0x63,
-  0x6d, 0x70, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x61, 0x73, 0x5f, 0x69, 0x6e,
-  0x74, 0x34, 0x28, 0x72, 0x65, 0x73, 0x62, 0x29, 0x20, 0x26, 0x20, 0x7e,
-  0x63, 0x6d, 0x70, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6d, 0x70, 0x20, 0x3d, 0x20,
-  0x69, 0x73, 0x6c, 0x65, 0x73, 0x73, 0x28, 0x63, 0x6d, 0x70, 0x56, 0x61,
-  0x6c, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x29, 0x28,
-  0x31, 0x36, 0x2e, 0x30, 0x66, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28,
-  0x21, 0x61, 0x6e, 0x79, 0x28, 0x63, 0x6d, 0x70, 0x29, 0x29, 0x20, 0x62,
-  0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2b,
-  0x3d, 0x20, 0x61, 0x73, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28,
-  0x63, 0x6d, 0x70, 0x20, 0x26, 0x20, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x74,
-  0x34, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x29, 0x28, 0x31,
-  0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28,
-  0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x61, 0x62, 0x20,
-  0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x34, 0x20, 0x63, 0x6d, 0x70, 0x56, 0x61, 0x6c, 0x20, 0x3d, 0x20,
-  0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c, 0x20, 0x61, 0x2c, 0x20, 0x62, 0x20,
-  0x2a, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61,
-  0x28, 0x61, 0x2c, 0x20, 0x61, 0x2c, 0x20, 0x2d, 0x66, 0x6d, 0x61, 0x28,
-  0x62, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x63, 0x61, 0x29, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x62, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x32, 0x2c, 0x20, 0x61,
-  0x62, 0x2c, 0x20, 0x63, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x34, 0x20,
-  0x63, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x6c, 0x65, 0x73, 0x73,
-  0x28, 0x63, 0x6d, 0x70, 0x56, 0x61, 0x6c, 0x2c, 0x20, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x34, 0x29, 0x28, 0x31, 0x36, 0x2e, 0x30, 0x66, 0x29,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x21, 0x61, 0x6e, 0x79, 0x28, 0x63,
-  0x6d, 0x70, 0x29, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63,
-  0x6f, 0x75, 0x6e, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x73, 0x5f, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x34, 0x28, 0x63, 0x6d, 0x70, 0x20, 0x26, 0x20,
-  0x61, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x34, 0x28, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x34, 0x29, 0x28, 0x31, 0x29, 0x29, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b,
-  0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x34, 0x20, 0x72, 0x65, 0x73, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74,
-  0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x6f,
-  0x75, 0x6e, 0x74, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x29,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x34, 0x29, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x29, 0x20,
-  0x2b, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x34, 0x29, 0x28,
-  0x31, 0x2e, 0x30, 0x66, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x2c, 0x20,
-  0x31, 0x2e, 0x30, 0x66, 0x2c, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x29, 0x29,
-  0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x32, 0x28, 0x6c, 0x6f, 0x67, 0x28,
-  0x66, 0x6d, 0x61, 0x28, 0x72, 0x65, 0x73, 0x61, 0x2c, 0x20, 0x72, 0x65,
-  0x73, 0x61, 0x2c, 0x20, 0x72, 0x65, 0x73, 0x62, 0x20, 0x2a, 0x20, 0x72,
-  0x65, 0x73, 0x62, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x20, 0x3d,
-  0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x34, 0x20, 0x26, 0x26,
-  0x20, 0x69, 0x20, 0x2b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x77, 0x69, 0x64,
-  0x74, 0x68, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74,
-  0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x63, 0x6f,
-  0x75, 0x6e, 0x74, 0x5b, 0x69, 0x5d, 0x20, 0x3e, 0x3d, 0x20, 0x30, 0x29,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x69,
-  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5b, 0x69, 0x5d, 0x29, 0x20, 0x2b,
-  0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x6c, 0x6f, 0x67,
-  0x28, 0x66, 0x6d, 0x61, 0x28, 0x72, 0x65, 0x73, 0x61, 0x5b, 0x69, 0x5d,
-  0x2c, 0x20, 0x72, 0x65, 0x73, 0x61, 0x5b, 0x69, 0x5d, 0x2c, 0x20, 0x72,
-  0x65, 0x73, 0x62, 0x5b, 0x69, 0x5d, 0x20, 0x2a, 0x20, 0x72, 0x65, 0x73,
-  0x62, 0x5b, 0x69, 0x5d, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x29, 0x20,
-  0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30, 0x66, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65,
-  0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2b, 0x20, 0x69, 0x5d,
-  0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20,
-  0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5b, 0x69, 0x5d, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x0a
-};
-unsigned int float_cl_len = 4699;

+ 0 - 607
libmandel/src/opencl/hexdouble.h

@@ -1,607 +0,0 @@
-unsigned char hexdouble_cl[] = {
-  0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
-  0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
-  0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
-  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
-  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
-  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64,
-  0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x68, 0x65,
-  0x78, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x5b,
-  0x36, 0x5d, 0x3b, 0x0a, 0x7d, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x3b, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
-  0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
-  0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
-  0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20,
-  0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x2a, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20,
-  0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73,
-  0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x65,
-  0x72, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73,
-  0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62,
-  0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
-  0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
-  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
-  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20,
-  0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d,
-  0x61, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c,
-  0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c,
-  0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x63, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x79, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x29, 0x28, 0x79, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x7a,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x7a, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x53,
-  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x64, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x78, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75,
-  0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x7a, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x79,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x72, 0x20, 0x3d,
-  0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x79, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x7a, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x29, 0x28, 0x7a, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x2e, 0x73, 0x32,
-  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
-  0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x66, 0x69,
-  0x76, 0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x29, 0x0a, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x79, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x64, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x7a, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x77, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x78, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x79, 0x2e, 0x73, 0x31,
-  0x20, 0x2b, 0x20, 0x7a, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x77, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c,
-  0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x73, 0x69, 0x78, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x64, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x29, 0x0a,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x20, 0x61, 0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x20, 0x62, 0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x64, 0x2c, 0x20, 0x65, 0x2c, 0x20, 0x66, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x31, 0x74, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x74, 0x32, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75,
-  0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x76, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x74, 0x34, 0x20, 0x3d, 0x20, 0x61, 0x76, 0x2e,
-  0x73, 0x32, 0x20, 0x2b, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x32, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x32, 0x74, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x72, 0x31, 0x74, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x74, 0x32, 0x74, 0x33, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x33, 0x20,
-  0x3d, 0x20, 0x74, 0x34, 0x20, 0x2b, 0x20, 0x74, 0x32, 0x74, 0x33, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x72, 0x32, 0x74, 0x35, 0x2e, 0x73, 0x31,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x72,
-  0x31, 0x74, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x32, 0x74, 0x35,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x33, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72,
-  0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x67, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x68, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x69, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x76, 0x20, 0x3d, 0x20, 0x74,
-  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62,
-  0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x76, 0x20, 0x3d, 0x20, 0x74,
-  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x2c, 0x20, 0x65,
-  0x2c, 0x20, 0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x63, 0x76, 0x20, 0x3d, 0x20, 0x74,
-  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x67, 0x2c, 0x20, 0x68,
-  0x2c, 0x20, 0x69, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x72,
-  0x31, 0x74, 0x31, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65,
-  0x65, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x62, 0x76, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x76, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x34, 0x20, 0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x20,
-  0x3d, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x63, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x31, 0x74, 0x31, 0x74,
-  0x32, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x61,
-  0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x32,
-  0x20, 0x2b, 0x20, 0x63, 0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x72,
-  0x31, 0x74, 0x31, 0x74, 0x32, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x72,
-  0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x20, 0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x32,
-  0x20, 0x2b, 0x20, 0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e,
-  0x73, 0x33, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29,
-  0x28, 0x72, 0x31, 0x74, 0x31, 0x74, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x33, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e,
-  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x61, 0x64, 0x64, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74,
-  0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x48,
-  0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c,
-  0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69,
-  0x76, 0x61, 0x74, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x2a, 0x20, 0x62, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x70, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e,
-  0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30,
-  0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x62, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x63,
-  0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61,
-  0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78,
-  0x5b, 0x32, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x64, 0x70, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33,
-  0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x65, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x78, 0x5b, 0x34, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x20, 0x3d,
-  0x20, 0x61, 0x70, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31, 0x70, 0x31,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x70,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x70, 0x2e, 0x73, 0x30, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
-  0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x68,
-  0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x62, 0x70, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x63, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x70,
-  0x31, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35,
-  0x36, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x75, 0x72, 0x53, 0x75, 0x6d, 0x28,
-  0x63, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x64, 0x70, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x2e, 0x73, 0x32, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x74, 0x34, 0x70, 0x37, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x76, 0x65,
-  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x70, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x65, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33, 0x70,
-  0x34, 0x35, 0x36, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34,
-  0x35, 0x36, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35,
-  0x36, 0x2e, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x35, 0x20, 0x3d, 0x20, 0x61,
-  0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x62, 0x2d, 0x3e,
-  0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2b, 0x20, 0x65, 0x70, 0x2e, 0x73, 0x31,
-  0x20, 0x2b, 0x20, 0x74, 0x34, 0x70, 0x37, 0x2e, 0x73, 0x31, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x74, 0x30, 0x2c, 0x20, 0x74, 0x31,
-  0x70, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x31, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x70, 0x32,
-  0x70, 0x33, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x32, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x72, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34,
-  0x35, 0x36, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x33, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x34, 0x70, 0x37,
-  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x34, 0x35, 0x20, 0x3d, 0x20,
-  0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x72, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x35, 0x29, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x28, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x7b,
-  0x20, 0x72, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x33,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x34, 0x35, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x20, 0x7d, 0x3b, 0x0a, 0x7d,
-  0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x48, 0x65,
-  0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x28,
-  0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76,
-  0x61, 0x74, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x2a, 0x20, 0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
-  0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x48, 0x65,
-  0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x62, 0x29, 0x0a,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x70, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20,
-  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71,
-  0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e,
-  0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x31, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78,
-  0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d,
-  0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x72, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x32, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e,
-  0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32,
-  0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33,
-  0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
-  0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x62,
-  0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x32, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d,
-  0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b,
-  0x32, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30,
-  0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x34, 0x5d, 0x2c, 0x20,
-  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78,
-  0x5b, 0x31, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b,
-  0x32, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
-  0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x34,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x78,
-  0x5b, 0x34, 0x5d, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x31, 0x20, 0x3d, 0x20, 0x70,
-  0x30, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x20,
-  0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x70,
-  0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x71, 0x30, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x71, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x33, 0x4c,
-  0x34, 0x35, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54, 0x68, 0x72, 0x65,
-  0x65, 0x53, 0x75, 0x6d, 0x28, 0x71, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x71, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x30, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x32, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73, 0x31,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x6e,
-  0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
-  0x72, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x30, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73,
-  0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x33, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74,
-  0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x78, 0x31,
-  0x32, 0x33, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72,
-  0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x30, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x73, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x73, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x30,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x74, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x74, 0x34, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x35,
-  0x4c, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54, 0x68, 0x72,
-  0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x33, 0x4c,
-  0x34, 0x35, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x76,
-  0x36, 0x20, 0x3d, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x2e, 0x73, 0x32,
-  0x20, 0x2b, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x31, 0x20,
-  0x2b, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x32, 0x20, 0x2b,
-  0x20, 0x74, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x31, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x20, 0x74, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x34, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x20, 0x2a, 0x20, 0x62,
-  0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e,
-  0x78, 0x5b, 0x34, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b,
-  0x31, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d,
-  0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2b,
-  0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a, 0x20, 0x62,
-  0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e,
-  0x78, 0x5b, 0x31, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b,
-  0x34, 0x5d, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x30, 0x5d,
-  0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x78, 0x5b, 0x35, 0x5d, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x65, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x76, 0x31, 0x2c, 0x20, 0x74,
-  0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65,
-  0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x74, 0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72,
-  0x65, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x31, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x72, 0x65, 0x33, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x32, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x30, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x65, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x33, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x76, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x48, 0x65, 0x78,
-  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x7b, 0x20, 0x72, 0x65, 0x30,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x31, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x65, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x33,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x34, 0x35, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x65, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x20, 0x7d, 0x3b,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x77,
-  0x69, 0x63, 0x65, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f,
-  0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x48, 0x65, 0x78, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x29, 0x0a, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
-  0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e,
-  0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x31,
-  0x5d, 0x20, 0x2a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x32, 0x5d, 0x20, 0x2a,
-  0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x33, 0x5d, 0x20, 0x2a, 0x20, 0x32, 0x2c,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e,
-  0x78, 0x5b, 0x34, 0x5d, 0x20, 0x2a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x78, 0x5b, 0x35,
-  0x5d, 0x20, 0x2a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
-  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x63,
-  0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74,
-  0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20,
-  0x76, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x76, 0x5b, 0x30, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x31, 0x5d, 0x2c, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x32, 0x5d, 0x2c, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x33, 0x5d,
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b,
-  0x34, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x76, 0x5b, 0x35, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x3b,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65,
-  0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61,
-  0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f,
-  0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74,
-  0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x78, 0x2c, 0x20, 0x5f,
-  0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x79, 0x2c, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e,
-  0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x2a, 0x20, 0x70, 0x77, 0x2c, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73,
-  0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a,
-  0x20, 0x70, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78,
-  0x49, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d,
-  0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75,
-  0x6c, 0x69, 0x61, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e,
-  0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x6a, 0x78,
-  0x2c, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x6a, 0x79, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67,
-  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78, 0x20,
-  0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69,
-  0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20,
-  0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x78, 0x6c, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28,
-  0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x6c,
-  0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20,
-  0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x70, 0x77, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64,
-  0x28, 0x70, 0x68, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48,
-  0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x78, 0x68,
-  0x20, 0x3d, 0x20, 0x7b, 0x20, 0x70, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20,
-  0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x79, 0x68, 0x20, 0x3d, 0x20, 0x7b, 0x20,
-  0x70, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c,
-  0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x63, 0x61, 0x4f, 0x66, 0x66, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28,
-  0x26, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58,
-  0x2c, 0x20, 0x26, 0x70, 0x78, 0x68, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63,
-  0x62, 0x4f, 0x66, 0x66, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26,
-  0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c,
-  0x20, 0x26, 0x70, 0x79, 0x68, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x61,
-  0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x63, 0x61, 0x4f, 0x66,
-  0x66, 0x2c, 0x20, 0x26, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20,
-  0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20,
-  0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x63, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x63, 0x62,
-  0x4f, 0x66, 0x66, 0x2c, 0x20, 0x26, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f,
-  0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x62, 0x20, 0x3d, 0x20, 0x63, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d,
-  0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48,
-  0x64, 0x28, 0x6a, 0x78, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64,
-  0x48, 0x64, 0x28, 0x6a, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e,
-  0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x77, 0x68,
-  0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78,
-  0x49, 0x74, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x26, 0x61, 0x2c, 0x20, 0x26, 0x61, 0x29, 0x3b, 0x20,
-  0x2f, 0x2a, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x20, 0x61, 0x64, 0x64, 0x20,
-  0x73, 0x71, 0x75, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x75, 0x6e,
-  0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28,
-  0x26, 0x62, 0x2c, 0x20, 0x26, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28,
-  0x26, 0x61, 0x2c, 0x20, 0x26, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d,
-  0x20, 0x7b, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x2c,
-  0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x2d,
-  0x62, 0x62, 0x2e, 0x78, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x2d, 0x62, 0x62,
-  0x2e, 0x78, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78,
-  0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x35,
-  0x5d, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x48, 0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x61, 0x6d, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26,
-  0x61, 0x61, 0x2c, 0x20, 0x26, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x48,
-  0x65, 0x78, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x62, 0x61,
-  0x62, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x69, 0x63, 0x65, 0x28, 0x26, 0x61,
-  0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x61, 0x61, 0x6d,
-  0x62, 0x62, 0x2c, 0x20, 0x26, 0x63, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64,
-  0x64, 0x28, 0x26, 0x61, 0x62, 0x61, 0x62, 0x2c, 0x20, 0x26, 0x63, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2b,
-  0x20, 0x62, 0x62, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x3e, 0x20, 0x31,
-  0x36, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f,
-  0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67,
-  0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29,
-  0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20,
-  0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x31, 0x29,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x49,
-  0x74, 0x65, 0x72, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73,
-  0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21,
-  0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f,
-  0x67, 0x32, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x78, 0x5b, 0x30,
-  0x5d, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2b,
-  0x20, 0x62, 0x2e, 0x78, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20, 0x62, 0x2e,
-  0x78, 0x5b, 0x30, 0x5d, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
-  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x20,
-  0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x20,
-  0x2d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35, 0x36,
-  0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x41, 0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61,
-  0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20, 0x35,
-  0x3b, 0x0a, 0x7d, 0x0a, 0x0a
-};
-unsigned int hexdouble_cl_len = 7241;

+ 0 - 9
libmandel/src/opencl/makefile

@@ -1,9 +0,0 @@
-
-HEADERS := $(patsubst %.cl,%.h,$(wildcard *.cl))
-
-
-all: $(HEADERS)
-
-%.h: %.cl
-	xxd -i $< > $@
-

+ 0 - 936
libmandel/src/opencl/octadouble.h

@@ -1,936 +0,0 @@
-unsigned char octadouble_cl[] = {
-  0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
-  0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
-  0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
-  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
-  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
-  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64,
-  0x65, 0x66, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x38, 0x20, 0x4f,
-  0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3b, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61,
-  0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20,
-  0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d,
-  0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b,
-  0x20, 0x28, 0x62, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65,
-  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x65, 0x72, 0x72, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2a, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x28,
-  0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29,
-  0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x73, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
-  0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x75,
-  0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61,
-  0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d,
-  0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29,
-  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c, 0x20, 0x62,
-  0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d,
-  0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53,
-  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x29, 0x0a, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x78,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c,
-  0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x78, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x79, 0x2e, 0x73, 0x31, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
-  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x79,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x7a, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x7a,
-  0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e,
-  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x20, 0x66, 0x6f, 0x75, 0x72, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x29,
-  0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75,
-  0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x79, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x64,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x78, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x79, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x7a, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x7a, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x72, 0x2e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x66, 0x69, 0x76, 0x65, 0x54, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x65, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x78, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x7a, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x79, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x64, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x77, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x7a, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x65, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
-  0x28, 0x77, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x78, 0x2e, 0x73, 0x31, 0x20,
-  0x2b, 0x20, 0x79, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x7a, 0x2e, 0x73,
-  0x31, 0x20, 0x2b, 0x20, 0x77, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d,
-  0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x73, 0x69, 0x78, 0x54, 0x68, 0x72,
-  0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x64, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x66, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x76, 0x20, 0x3d,
-  0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c,
-  0x20, 0x62, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x76, 0x20, 0x3d,
-  0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x2c,
-  0x20, 0x65, 0x2c, 0x20, 0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x31, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x76,
-  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x32, 0x74, 0x33, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x34,
-  0x20, 0x3d, 0x20, 0x61, 0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x62,
-  0x76, 0x2e, 0x73, 0x32, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x32, 0x74, 0x35, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x31, 0x74,
-  0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x74, 0x33, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x34, 0x20, 0x2b,
-  0x20, 0x74, 0x32, 0x74, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x72,
-  0x32, 0x74, 0x35, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x29, 0x28, 0x72, 0x31, 0x74, 0x31, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x32, 0x74, 0x35, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72,
-  0x33, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
-  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x6e,
-  0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x63, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x64, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x66, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x67,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x68, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x29, 0x0a, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x61, 0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75,
-  0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x62, 0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75,
-  0x6d, 0x28, 0x64, 0x2c, 0x20, 0x65, 0x2c, 0x20, 0x66, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x63, 0x76, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75,
-  0x6d, 0x28, 0x67, 0x2c, 0x20, 0x68, 0x2c, 0x20, 0x69, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x72, 0x31, 0x74, 0x31, 0x74, 0x32, 0x20,
-  0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x61,
-  0x76, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x76, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x63, 0x76, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x72, 0x32, 0x74,
-  0x33, 0x74, 0x34, 0x74, 0x35, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x75, 0x72,
-  0x53, 0x75, 0x6d, 0x28, 0x61, 0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62,
-  0x76, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x63, 0x76, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x72, 0x31, 0x74, 0x31, 0x74, 0x32, 0x2e, 0x73, 0x31, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x72, 0x33, 0x20, 0x3d, 0x20, 0x61, 0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b,
-  0x20, 0x62, 0x76, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x63, 0x76, 0x2e,
-  0x73, 0x32, 0x20, 0x2b, 0x20, 0x72, 0x31, 0x74, 0x31, 0x74, 0x32, 0x2e,
-  0x73, 0x32, 0x20, 0x2b, 0x20, 0x72, 0x32, 0x74, 0x33, 0x74, 0x34, 0x74,
-  0x35, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x72, 0x32, 0x74, 0x33, 0x74,
-  0x34, 0x74, 0x35, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x72, 0x32, 0x74,
-  0x33, 0x74, 0x34, 0x74, 0x35, 0x2e, 0x73, 0x33, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x72, 0x31, 0x74, 0x31, 0x74,
-  0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x32, 0x74, 0x33, 0x74, 0x34,
-  0x74, 0x35, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x33, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x4f,
-  0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x64,
-  0x64, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72,
-  0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6e,
-  0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65,
-  0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a,
-  0x20, 0x62, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x70, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x70, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e,
-  0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x63, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x61, 0x2d, 0x3e, 0x73, 0x32, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x32,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x64, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x33, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x65, 0x70, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x34, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x73, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x66, 0x70, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2d, 0x3e,
-  0x73, 0x35, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x35, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x67, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x61, 0x2d, 0x3e, 0x73, 0x36, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x36,
-  0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x61, 0x70, 0x2e, 0x73,
-  0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x31, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x62, 0x70, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x32, 0x70, 0x32,
-  0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75,
-  0x6d, 0x28, 0x62, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x63, 0x70, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x70, 0x31, 0x2e, 0x73, 0x31, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x34, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35, 0x36, 0x20, 0x3d, 0x20, 0x66,
-  0x6f, 0x75, 0x72, 0x53, 0x75, 0x6d, 0x28, 0x63, 0x70, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x64, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x32, 0x70,
-  0x32, 0x70, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x70, 0x32,
-  0x70, 0x33, 0x2e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x34, 0x70, 0x37,
-  0x38, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x64, 0x70, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x65,
-  0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35, 0x36,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35, 0x36, 0x2e,
-  0x73, 0x32, 0x2c, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35, 0x36, 0x2e, 0x73,
-  0x33, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x35, 0x70,
-  0x39, 0x31, 0x30, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54, 0x68, 0x72,
-  0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x65, 0x70, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x66, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x34, 0x70, 0x37,
-  0x38, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x34, 0x70, 0x37, 0x38, 0x2e,
-  0x73, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x36, 0x70, 0x31, 0x31, 0x20, 0x3d, 0x20, 0x66,
-  0x69, 0x76, 0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x66, 0x70,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x67, 0x70, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x74, 0x35, 0x70, 0x39, 0x31, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74,
-  0x35, 0x70, 0x39, 0x31, 0x30, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x30, 0x2e,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x74, 0x37, 0x20, 0x3d, 0x20, 0x61, 0x2d, 0x3e, 0x73,
-  0x37, 0x20, 0x2b, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x37, 0x20, 0x2b, 0x20,
-  0x67, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x36, 0x70, 0x31,
-  0x31, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x30, 0x20, 0x3d, 0x20,
-  0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x74, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x70, 0x31, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x30, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x32, 0x70, 0x32, 0x70, 0x33, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x72, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x31, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x33, 0x70, 0x34, 0x35, 0x36, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x32, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x34, 0x70, 0x37, 0x38, 0x2e, 0x73, 0x30, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x34, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x33, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x74, 0x35, 0x70, 0x39, 0x31, 0x30, 0x2e, 0x73, 0x30, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x35, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x34, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x74, 0x36, 0x70, 0x31, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x72, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x35, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x74, 0x37, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x4f, 0x63, 0x74, 0x61, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x28, 0x72, 0x30, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x32, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x72, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72,
-  0x34, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x35, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x36, 0x37, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x36, 0x37,
-  0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e,
-  0x6c, 0x69, 0x6e, 0x65, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x63, 0x6f, 0x6e, 0x73,
-  0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20,
-  0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20,
-  0x61, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70,
-  0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x62, 0x29, 0x0a, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x70, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d,
-  0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x32, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x31,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x32,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x32, 0x29,
-  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x33, 0x2c, 0x20, 0x62,
-  0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73,
-  0x32, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73,
-  0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x2d, 0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x32,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20, 0x62,
-  0x2d, 0x3e, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x30, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e,
-  0x73, 0x34, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x74, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2d, 0x3e, 0x73, 0x33, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73,
-  0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x74, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x32, 0x2c, 0x20,
-  0x62, 0x2d, 0x3e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x33, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e,
-  0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x33, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x74, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73,
-  0x34, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x75, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x35, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x75, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d,
-  0x3e, 0x73, 0x34, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x75, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
-  0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x33, 0x2c, 0x20, 0x62, 0x2d, 0x3e,
-  0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x75, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x32, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x75, 0x34, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d,
-  0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x34, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x75, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
-  0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2d, 0x3e,
-  0x73, 0x35, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x76, 0x30, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x36,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x76, 0x31,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2d, 0x3e, 0x73, 0x35, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x76, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x34, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x76, 0x33, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x33,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x76, 0x34,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2d, 0x3e, 0x73, 0x32, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x34, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x76, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x73, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x76, 0x36, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x36, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x31,
-  0x20, 0x3d, 0x20, 0x70, 0x30, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x32,
-  0x74, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53,
-  0x75, 0x6d, 0x28, 0x70, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x71, 0x30,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x71, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
-  0x20, 0x61, 0x33, 0x74, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78,
-  0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x71, 0x30, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x71, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72,
-  0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x61, 0x32, 0x74, 0x31,
-  0x32, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x34, 0x74, 0x35, 0x36,
-  0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72,
-  0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x73, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x73, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x33,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x61, 0x33, 0x74, 0x33, 0x34, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x61, 0x32, 0x74, 0x31, 0x32, 0x2e, 0x73, 0x32, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x20, 0x78, 0x31, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6e,
-  0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x30,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x73, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x33, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x74, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74,
-  0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x34, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x20, 0x61, 0x35, 0x74, 0x37, 0x38, 0x20, 0x3d, 0x20, 0x73, 0x69,
-  0x78, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x31,
-  0x32, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x78, 0x31, 0x32, 0x33, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x32, 0x2c,
-  0x20, 0x61, 0x34, 0x74, 0x35, 0x36, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x61,
-  0x33, 0x74, 0x33, 0x34, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x30, 0x2e, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x20, 0x79, 0x31, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x6e, 0x69,
-  0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x74,
-  0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x31, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x74, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x74, 0x34, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x75, 0x30,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x75, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x75, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x75, 0x33, 0x2e, 0x73, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x20, 0x61, 0x36, 0x74, 0x39, 0x61, 0x20, 0x3d, 0x20, 0x6e,
-  0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28,
-  0x79, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x79, 0x31, 0x32,
-  0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x79, 0x31, 0x32, 0x33, 0x2e, 0x73,
-  0x32, 0x2c, 0x20, 0x75, 0x34, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x75, 0x35,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x61, 0x35, 0x74, 0x37, 0x38, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x61, 0x34, 0x74, 0x35, 0x36, 0x2e, 0x73, 0x32, 0x2c,
-  0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x7a, 0x31, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54,
-  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x75, 0x30, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x75, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x75, 0x32,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x75, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x75, 0x34, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x75, 0x35, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x76, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x76, 0x31, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x76, 0x32, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x61, 0x37, 0x74, 0x62, 0x63, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6e, 0x65,
-  0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x76, 0x33, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x76, 0x34, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x76,
-  0x35, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x76, 0x36, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x7a, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x7a, 0x31,
-  0x32, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x7a, 0x31, 0x32, 0x33, 0x2e,
-  0x73, 0x32, 0x2c, 0x20, 0x61, 0x36, 0x74, 0x39, 0x61, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x61, 0x36, 0x74, 0x39, 0x61, 0x2e, 0x73, 0x32, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x38, 0x20, 0x3d, 0x20, 0x76, 0x30, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x20, 0x76, 0x31, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x76, 0x32, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x76, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x20, 0x76, 0x34, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x76, 0x35, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x76, 0x36, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x20, 0x61, 0x37, 0x74, 0x62, 0x63, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20,
-  0x61, 0x37, 0x74, 0x62, 0x63, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x37,
-  0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x73,
-  0x36, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x20, 0x2b, 0x20,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e,
-  0x73, 0x35, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x32, 0x20, 0x2b,
-  0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d,
-  0x3e, 0x73, 0x34, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x33, 0x20,
-  0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61,
-  0x2d, 0x3e, 0x73, 0x33, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x34,
-  0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x61, 0x2d, 0x3e, 0x73, 0x32, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73,
-  0x35, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x61, 0x2d, 0x3e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e,
-  0x73, 0x36, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2d,
-  0x3e, 0x73, 0x37, 0x3b, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x30, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x61, 0x31, 0x2c, 0x20, 0x61, 0x32, 0x74, 0x31, 0x32, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75,
-  0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65,
-  0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x61, 0x33, 0x74, 0x33, 0x34, 0x2e,
-  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x32, 0x20, 0x3d, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72,
-  0x65, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x61, 0x34, 0x74, 0x35, 0x36,
-  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x33, 0x20, 0x3d, 0x20,
-  0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x72, 0x65, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x61, 0x35, 0x74, 0x37,
-  0x38, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x34, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x72, 0x65, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x61, 0x36, 0x74,
-  0x39, 0x61, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x35, 0x20,
-  0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75,
-  0x6d, 0x28, 0x72, 0x65, 0x34, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x61, 0x37,
-  0x74, 0x62, 0x63, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x36,
-  0x37, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x35, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x61, 0x38, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x29, 0x28, 0x72, 0x65, 0x30, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x65, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x32,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x33, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x65, 0x34, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x35,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x36, 0x37, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x65, 0x36, 0x37, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x72, 0x5b, 0x38, 0x5d, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20,
-  0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20,
-  0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x20,
-  0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x38,
-  0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x69, 0x6e,
-  0x74, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x2b,
-  0x20, 0x6a, 0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x6a, 0x2b, 0x2b, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73,
-  0x65, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28,
-  0x28, 0x2a, 0x61, 0x29, 0x5b, 0x69, 0x5d, 0x2c, 0x20, 0x28, 0x2a, 0x62,
-  0x29, 0x5b, 0x6a, 0x5d, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x28,
-  0x69, 0x6e, 0x74, 0x20, 0x6b, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x6b,
-  0x20, 0x3c, 0x20, 0x38, 0x3b, 0x20, 0x6b, 0x2b, 0x2b, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
-  0x20, 0x78, 0x31, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65,
-  0x65, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x5b, 0x6b, 0x5d, 0x2c, 0x20, 0x73,
-  0x65, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x65, 0x2e, 0x73, 0x31, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x5b, 0x6b, 0x5d, 0x20, 0x3d,
-  0x20, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x73, 0x65, 0x2e, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x78, 0x31,
-  0x32, 0x33, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,
-  0x65, 0x2e, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x78, 0x31, 0x32, 0x33, 0x2e,
-  0x73, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x4f,
-  0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x28,
-  0x72, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x72, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
-  0x72, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x72, 0x5b, 0x33, 0x5d, 0x2c, 0x20,
-  0x72, 0x5b, 0x34, 0x5d, 0x2c, 0x20, 0x72, 0x5b, 0x35, 0x5d, 0x2c, 0x20,
-  0x72, 0x5b, 0x36, 0x5d, 0x2c, 0x20, 0x72, 0x5b, 0x37, 0x5d, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x70, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20, 0x62,
-  0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x30, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e,
-  0x73, 0x30, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x71, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2d, 0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x32, 0x2c,
-  0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d,
-  0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x72, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
-  0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2d, 0x3e,
-  0x73, 0x32, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x33,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x31,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2d, 0x3e, 0x73, 0x32, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d,
-  0x3e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x33, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30,
-  0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74,
-  0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x2d, 0x3e, 0x73, 0x34, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x33, 0x2c, 0x20, 0x62,
-  0x2d, 0x3e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x32, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73,
-  0x32, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74,
-  0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x2d, 0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x33,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20, 0x62,
-  0x2d, 0x3e, 0x73, 0x34, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x75, 0x30, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e,
-  0x73, 0x35, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x75, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2d, 0x3e, 0x73, 0x34, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73,
-  0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x75, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x33, 0x2c, 0x20,
-  0x62, 0x2d, 0x3e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x75, 0x33, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e,
-  0x73, 0x32, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x33, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x75, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2d, 0x3e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2d, 0x3e, 0x73,
-  0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x75, 0x35, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x2c, 0x20,
-  0x62, 0x2d, 0x3e, 0x73, 0x35, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x76, 0x31, 0x20, 0x3d,
-  0x20, 0x70, 0x30, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x32, 0x4c, 0x33,
-  0x34, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d,
-  0x28, 0x70, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x71, 0x30, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x71, 0x31, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74,
-  0x33, 0x4c, 0x34, 0x35, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54, 0x68,
-  0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x71, 0x30, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x71, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x30, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x72, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72,
-  0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36, 0x20, 0x3d,
-  0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75,
-  0x6d, 0x28, 0x72, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x31, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x72, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73,
-  0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x73, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x33, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73, 0x32, 0x2c,
-  0x20, 0x74, 0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x78, 0x31, 0x32, 0x33, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54,
-  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x30, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x73, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x74, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x74, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x74, 0x34, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x74, 0x35, 0x4c, 0x36, 0x37, 0x20, 0x3d, 0x20, 0x73, 0x69, 0x78, 0x54,
-  0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x78, 0x31, 0x32, 0x33,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x78, 0x31, 0x32, 0x33, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74,
-  0x33, 0x4c, 0x34, 0x35, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x34, 0x4c,
-  0x35, 0x36, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36,
-  0x2e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x78, 0x34, 0x35, 0x36, 0x20, 0x3d,
-  0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75,
-  0x6d, 0x28, 0x74, 0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x31, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74,
-  0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x34, 0x2e, 0x73, 0x31, 0x2c,
-  0x20, 0x75, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x75, 0x31, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x75, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x75, 0x33,
-  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x74, 0x36, 0x4c, 0x38, 0x39, 0x20,
-  0x3d, 0x20, 0x6e, 0x69, 0x6e, 0x65, 0x54, 0x68, 0x72, 0x65, 0x65, 0x53,
-  0x75, 0x6d, 0x28, 0x78, 0x34, 0x35, 0x36, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x78, 0x34, 0x35, 0x36, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x78, 0x34, 0x35,
-  0x36, 0x2e, 0x73, 0x32, 0x2c, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x74, 0x35, 0x4c, 0x36, 0x37, 0x2e, 0x73, 0x32,
-  0x2c, 0x20, 0x75, 0x34, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x75, 0x35, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30,
-  0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x76, 0x37, 0x20, 0x3d, 0x20, 0x74, 0x36, 0x4c, 0x38,
-  0x39, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x36, 0x4c, 0x38, 0x39,
-  0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x36, 0x20, 0x2a, 0x20, 0x62,
-  0x2d, 0x3e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x35,
-  0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61,
-  0x2d, 0x3e, 0x73, 0x34, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x32,
-  0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x33, 0x20, 0x2a, 0x20, 0x62,
-  0x2d, 0x3e, 0x73, 0x33, 0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x32,
-  0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x34, 0x20, 0x2b, 0x20, 0x61,
-  0x2d, 0x3e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x2d, 0x3e, 0x73, 0x35,
-  0x20, 0x2b, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62,
-  0x2d, 0x3e, 0x73, 0x36, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x30, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x76, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x4c, 0x33, 0x34, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75,
-  0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65,
-  0x30, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x33, 0x4c, 0x34, 0x35, 0x2e,
-  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x32, 0x20, 0x3d, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72,
-  0x65, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x34, 0x4c, 0x35, 0x36,
-  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x33, 0x20, 0x3d, 0x20,
-  0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x72, 0x65, 0x32, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x35, 0x4c, 0x36,
-  0x37, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x34, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x72, 0x65, 0x33, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x36, 0x4c,
-  0x38, 0x39, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x35, 0x36,
-  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x72, 0x65, 0x34, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x76,
-  0x37, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x29, 0x28, 0x72, 0x65, 0x30, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x72, 0x65, 0x31, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x32, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x33, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x72, 0x65, 0x34, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x35, 0x36,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x35, 0x36, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x3b, 0x2a, 0x2f, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x4f, 0x63, 0x74,
-  0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x77, 0x69, 0x63,
-  0x65, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x70, 0x72,
-  0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x29, 0x0a, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x4f,
-  0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x28,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e,
-  0x73, 0x30, 0x20, 0x2a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x31, 0x20, 0x2a, 0x20,
-  0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61,
-  0x2d, 0x3e, 0x73, 0x32, 0x20, 0x2a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x33, 0x20,
-  0x2a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x61, 0x2d, 0x3e, 0x73, 0x34, 0x20, 0x2a, 0x20, 0x32, 0x2c, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x73,
-  0x35, 0x20, 0x2a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x61, 0x2d, 0x3e, 0x73, 0x36, 0x20, 0x2a, 0x20, 0x32,
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x2d,
-  0x3e, 0x73, 0x37, 0x20, 0x2a, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x4f, 0x63, 0x74, 0x61, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64,
-  0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e,
-  0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x2a, 0x20, 0x76, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x4f, 0x63, 0x74, 0x61, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x28, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x30, 0x5d, 0x2c, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x31, 0x5d, 0x2c,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x32,
-  0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76,
-  0x5b, 0x33, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x76, 0x5b, 0x34, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x76, 0x5b, 0x35, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x36, 0x5d, 0x2c, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x76, 0x5b, 0x37, 0x5d, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x5f,
-  0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64,
-  0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67,
-  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a,
-  0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e,
-  0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x2a, 0x20, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74,
-  0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20,
-  0x79, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x70, 0x77, 0x2c, 0x20,
-  0x5f, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x70, 0x68, 0x2c, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x2c, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5f, 0x5f, 0x63,
-  0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x2a, 0x20, 0x6a, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x63, 0x6f,
-  0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x2a, 0x20, 0x6a, 0x79, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d,
-  0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f,
-  0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20,
-  0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74,
-  0x68, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x63, 0x74, 0x61,
-  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20,
-  0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x78, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48,
-  0x64, 0x28, 0x79, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x63,
-  0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x6c,
-  0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x70, 0x77, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x70,
-  0x68, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x63, 0x74,
-  0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x78, 0x68, 0x20,
-  0x3d, 0x20, 0x7b, 0x20, 0x70, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30,
-  0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30,
-  0x2c, 0x20, 0x30, 0x20, 0x7d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4f,
-  0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x79,
-  0x68, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x70, 0x79, 0x2c, 0x20, 0x30, 0x2c,
-  0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c,
-  0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x63, 0x61, 0x4f, 0x66, 0x66, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c,
-  0x28, 0x26, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x58, 0x2c, 0x20, 0x26, 0x70, 0x78, 0x68, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x63, 0x62, 0x4f, 0x66, 0x66, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c,
-  0x28, 0x26, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x2c, 0x20, 0x26, 0x70, 0x79, 0x68, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x63,
-  0x61, 0x4f, 0x66, 0x66, 0x2c, 0x20, 0x26, 0x78, 0x6c, 0x29, 0x3b, 0x20,
-  0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64,
-  0x28, 0x26, 0x63, 0x62, 0x4f, 0x66, 0x66, 0x2c, 0x20, 0x26, 0x79, 0x74,
-  0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b,
-  0x20, 0x79, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x63, 0x74, 0x61,
-  0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x63,
-  0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x63, 0x62,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6a, 0x75,
-  0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x20, 0x3d,
-  0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x6a, 0x78, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x62, 0x20,
-  0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x64, 0x28, 0x6a, 0x79, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e,
-  0x20, 0x3c, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, 0x72, 0x20, 0x2d,
-  0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x61,
-  0x2c, 0x20, 0x26, 0x61, 0x29, 0x3b, 0x20, 0x2f, 0x2a, 0x20, 0x54, 0x4f,
-  0x44, 0x4f, 0x20, 0x61, 0x64, 0x64, 0x20, 0x73, 0x71, 0x75, 0x61, 0x72,
-  0x69, 0x6e, 0x67, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
-  0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
-  0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x62, 0x2c, 0x20,
-  0x26, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x26, 0x61, 0x2c,
-  0x20, 0x26, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28,
-  0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x28,
-  0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x32, 0x2c, 0x20,
-  0x2d, 0x62, 0x62, 0x2e, 0x73, 0x33, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
-  0x73, 0x34, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x35, 0x2c, 0x20,
-  0x2d, 0x62, 0x62, 0x2e, 0x73, 0x36, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
-  0x73, 0x37, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x61, 0x6d, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28,
-  0x26, 0x61, 0x61, 0x2c, 0x20, 0x26, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62,
-  0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x4f, 0x63, 0x74, 0x61, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x62, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x69, 0x63, 0x65, 0x28,
-  0x26, 0x61, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x26, 0x61,
-  0x61, 0x6d, 0x62, 0x62, 0x2c, 0x20, 0x26, 0x63, 0x61, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20,
-  0x61, 0x64, 0x64, 0x28, 0x26, 0x61, 0x62, 0x61, 0x62, 0x2c, 0x20, 0x26,
-  0x63, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b,
-  0x20, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29,
-  0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e,
-  0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28,
-  0x6c, 0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29,
-  0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61,
-  0x78, 0x49, 0x74, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64,
-  0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65,
-  0x72, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
-  0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d, 0x20,
-  0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
-  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e,
-  0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x32,
-  0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20,
-  0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20,
-  0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e,
-  0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64,
-  0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x28,
-  0x61, 0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20,
-  0x62, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x32,
-  0x35, 0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f,
-  0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d,
-  0x20, 0x35, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a
-};
-unsigned int octadouble_cl_len = 11191;

+ 0 - 547
libmandel/src/opencl/quaddouble.h

@@ -1,547 +0,0 @@
-unsigned char quaddouble_cl[] = {
-  0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
-  0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
-  0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
-  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
-  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
-  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
-  0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
-  0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
-  0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20,
-  0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x2a, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20,
-  0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73,
-  0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x65,
-  0x72, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73,
-  0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62,
-  0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
-  0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
-  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
-  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
-  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73,
-  0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20,
-  0x2a, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28,
-  0x73, 0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x72, 0x65,
-  0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20,
-  0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d,
-  0x61, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c,
-  0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
-  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x77,
-  0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x65,
-  0x72, 0x72, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a,
-  0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x65, 0x72, 0x72,
-  0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c,
-  0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-  0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
-  0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x2a, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x2a, 0x20, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x61, 0x2c, 0x20, 0x2a,
-  0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x61, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x2c, 0x20, 0x74, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x62, 0x63, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x74, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x61, 0x74,
-  0x33, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a,
-  0x61, 0x20, 0x3d, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73, 0x30, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2a, 0x62, 0x20, 0x3d, 0x20, 0x62, 0x63, 0x2e,
-  0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x63, 0x20, 0x3d,
-  0x20, 0x62, 0x63, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
-  0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x32, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x2a, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x2a, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x2a, 0x20, 0x63, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x61, 0x2c, 0x20,
-  0x2a, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x2c, 0x20, 0x74, 0x2e,
-  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x61, 0x20,
-  0x3d, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x2a, 0x62, 0x20, 0x3d, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20,
-  0x2b, 0x20, 0x61, 0x74, 0x33, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x76, 0x6f, 0x69, 0x64,
-  0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x2a, 0x63, 0x30, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x2a, 0x63, 0x31, 0x2c, 0x20, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x2a,
-  0x63, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x2a,
-  0x63, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x2a,
-  0x63, 0x34, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73,
-  0x32, 0x20, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x73, 0x33, 0x20,
-  0x3d, 0x20, 0x30, 0x2e, 0x30, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x73, 0x30,
-  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
-  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x2a, 0x63,
-  0x34, 0x2c, 0x20, 0x63, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x30,
-  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
-  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x32, 0x2c, 0x20, 0x73, 0x30,
-  0x2c, 0x20, 0x63, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x30, 0x20,
-  0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x31, 0x2c, 0x20, 0x73, 0x30, 0x2c,
-  0x20, 0x63, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x63, 0x30, 0x20,
-  0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x2a, 0x63, 0x30, 0x2c, 0x20, 0x73, 0x30, 0x2c,
-  0x20, 0x63, 0x31, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x73, 0x30, 0x20,
-  0x3d, 0x20, 0x2a, 0x63, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x73, 0x31, 0x20,
-  0x3d, 0x20, 0x2a, 0x63, 0x31, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x69, 0x66,
-  0x20, 0x28, 0x73, 0x31, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20,
-  0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
-  0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x32, 0x2c, 0x20, 0x26,
-  0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20,
-  0x28, 0x73, 0x32, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20,
-  0x26, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x73, 0x33, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e,
-  0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,
-  0x33, 0x20, 0x2b, 0x3d, 0x20, 0x2a, 0x63, 0x34, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75,
-  0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28,
-  0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73, 0x33,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x20, 0x65, 0x6c, 0x73,
-  0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31,
-  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
-  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x33,
-  0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x32, 0x20, 0x21, 0x3d, 0x20,
-  0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f,
-  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x32, 0x2c, 0x20,
-  0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73, 0x33, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d,
-  0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73,
-  0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20,
-  0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f,
-  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x30, 0x2c, 0x20,
-  0x2a, 0x63, 0x32, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x31, 0x20, 0x21, 0x3d,
-  0x20, 0x30, 0x2e, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c,
-  0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x32,
-  0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75,
-  0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28,
-  0x73, 0x32, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73, 0x33,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73,
-  0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31,
-  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f,
-  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x34,
-  0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x7d, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x30,
-  0x2c, 0x20, 0x2a, 0x63, 0x33, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73,
-  0x31, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x2e, 0x30, 0x29, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d,
-  0x28, 0x73, 0x31, 0x2c, 0x20, 0x2a, 0x63, 0x34, 0x2c, 0x20, 0x26, 0x73,
-  0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x73,
-  0x30, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x5f, 0x74, 0x77,
-  0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x30, 0x2c, 0x20, 0x2a, 0x63,
-  0x34, 0x2c, 0x20, 0x26, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x2a, 0x63,
-  0x30, 0x20, 0x3d, 0x20, 0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x63,
-  0x31, 0x20, 0x3d, 0x20, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x63,
-  0x32, 0x20, 0x3d, 0x20, 0x73, 0x32, 0x3b, 0x0a, 0x20, 0x20, 0x2a, 0x63,
-  0x33, 0x20, 0x3d, 0x20, 0x73, 0x33, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x34, 0x20, 0x61, 0x64, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x34, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x34, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31,
-  0x2c, 0x20, 0x73, 0x32, 0x2c, 0x20, 0x73, 0x33, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x2c,
-  0x20, 0x74, 0x31, 0x2c, 0x20, 0x74, 0x32, 0x2c, 0x20, 0x74, 0x33, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x30,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x61,
-  0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26,
-  0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x61, 0x5b,
-  0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x74,
-  0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x61, 0x5b, 0x32,
-  0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x26, 0x74, 0x32,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x33, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x61, 0x5b, 0x33, 0x5d,
-  0x2c, 0x20, 0x62, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x26, 0x74, 0x33, 0x29,
-  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20,
-  0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x26,
-  0x73, 0x32, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x31,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x32, 0x28, 0x26, 0x73, 0x33, 0x2c, 0x20, 0x26, 0x74,
-  0x30, 0x2c, 0x20, 0x26, 0x74, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x30, 0x20, 0x2b, 0x20, 0x74,
-  0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x28, 0x26, 0x73, 0x30, 0x2c,
-  0x20, 0x26, 0x73, 0x31, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x2c, 0x20, 0x26,
-  0x73, 0x33, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x73, 0x30, 0x2c, 0x20, 0x73,
-  0x31, 0x2c, 0x20, 0x73, 0x32, 0x2c, 0x20, 0x73, 0x33, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x30,
-  0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33,
-  0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x71, 0x30, 0x2c,
-  0x20, 0x71, 0x31, 0x2c, 0x20, 0x71, 0x32, 0x2c, 0x20, 0x71, 0x33, 0x2c,
-  0x20, 0x71, 0x34, 0x2c, 0x20, 0x71, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x2c, 0x20,
-  0x74, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73,
-  0x32, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x30, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x5b,
-  0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26, 0x71,
-  0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26,
-  0x71, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x32, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26,
-  0x71, 0x32, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x33,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x32, 0x5d, 0x2c, 0x20,
-  0x26, 0x71, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x34,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x31, 0x5d, 0x2c, 0x20,
-  0x26, 0x71, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x35,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x62, 0x5b, 0x30, 0x5d, 0x2c, 0x20,
-  0x26, 0x71, 0x35, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f,
-  0x2a, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x41, 0x63, 0x63, 0x75,
-  0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x2a, 0x2f, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d,
-  0x28, 0x26, 0x70, 0x31, 0x2c, 0x20, 0x26, 0x70, 0x32, 0x2c, 0x20, 0x26,
-  0x71, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2a,
-  0x20, 0x53, 0x69, 0x78, 0x2d, 0x54, 0x68, 0x72, 0x65, 0x65, 0x20, 0x53,
-  0x75, 0x6d, 0x20, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x71,
-  0x31, 0x2c, 0x20, 0x71, 0x32, 0x2c, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x70,
-  0x34, 0x2c, 0x20, 0x70, 0x35, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x53, 0x75, 0x6d, 0x28, 0x26,
-  0x70, 0x32, 0x2c, 0x20, 0x26, 0x71, 0x31, 0x2c, 0x20, 0x26, 0x71, 0x32,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65,
-  0x53, 0x75, 0x6d, 0x28, 0x26, 0x70, 0x33, 0x2c, 0x20, 0x26, 0x70, 0x34,
-  0x2c, 0x20, 0x26, 0x70, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x2f, 0x2a, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x20, 0x28,
-  0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x73, 0x32, 0x29, 0x20,
-  0x3d, 0x20, 0x28, 0x70, 0x32, 0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x71,
-  0x32, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x70, 0x33, 0x2c, 0x20, 0x70, 0x34,
-  0x2c, 0x20, 0x70, 0x35, 0x29, 0x2e, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33, 0x2c, 0x20, 0x26,
-  0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71, 0x31,
-  0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x32, 0x20,
-  0x2b, 0x20, 0x70, 0x35, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73,
-  0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x32, 0x20, 0x2b, 0x3d, 0x20, 0x28,
-  0x74, 0x30, 0x20, 0x2b, 0x20, 0x74, 0x31, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x2f, 0x2a, 0x20, 0x4f, 0x28, 0x65, 0x70, 0x73, 0x5e,
-  0x33, 0x29, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x65, 0x72,
-  0x6d, 0x73, 0x20, 0x2a, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31,
-  0x20, 0x2b, 0x3d, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x2a, 0x62, 0x5b, 0x33,
-  0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x2a, 0x62, 0x5b, 0x32,
-  0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x32, 0x5d, 0x2a, 0x62, 0x5b, 0x31,
-  0x5d, 0x20, 0x2b, 0x20, 0x61, 0x5b, 0x33, 0x5d, 0x2a, 0x62, 0x5b, 0x30,
-  0x5d, 0x20, 0x2b, 0x20, 0x71, 0x30, 0x20, 0x2b, 0x20, 0x71, 0x33, 0x20,
-  0x2b, 0x20, 0x71, 0x34, 0x20, 0x2b, 0x20, 0x71, 0x35, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x6e, 0x6f, 0x72, 0x6d, 0x28, 0x26, 0x70,
-  0x30, 0x2c, 0x20, 0x26, 0x70, 0x31, 0x2c, 0x20, 0x26, 0x73, 0x30, 0x2c,
-  0x20, 0x26, 0x73, 0x31, 0x2c, 0x20, 0x26, 0x73, 0x32, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x70, 0x30, 0x2c,
-  0x20, 0x70, 0x31, 0x2c, 0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x29,
-  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x73, 0x71, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70,
-  0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x70,
-  0x33, 0x2c, 0x20, 0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x71, 0x30,
-  0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x71, 0x32, 0x2c, 0x20, 0x71, 0x33,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x30, 0x2c, 0x20,
-  0x74, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x70, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x30,
-  0x5d, 0x2c, 0x20, 0x26, 0x71, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72,
-  0x6f, 0x64, 0x28, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x30,
-  0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x71, 0x31,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x28, 0x32, 0x2e, 0x30,
-  0x20, 0x2a, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x32,
-  0x5d, 0x2c, 0x20, 0x26, 0x71, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x70, 0x72,
-  0x6f, 0x64, 0x28, 0x61, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x61, 0x5b, 0x31,
-  0x5d, 0x2c, 0x20, 0x26, 0x71, 0x33, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73,
-  0x75, 0x6d, 0x28, 0x71, 0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x26,
-  0x71, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x71, 0x30,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71,
-  0x30, 0x2c, 0x20, 0x71, 0x31, 0x2c, 0x20, 0x26, 0x71, 0x31, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x70, 0x32, 0x2c, 0x20, 0x70, 0x33,
-  0x2c, 0x20, 0x26, 0x70, 0x33, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x73, 0x30, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
-  0x6d, 0x28, 0x71, 0x30, 0x2c, 0x20, 0x70, 0x32, 0x2c, 0x20, 0x26, 0x74,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71, 0x31, 0x2c,
-  0x20, 0x70, 0x33, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c,
-  0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74,
-  0x30, 0x20, 0x2b, 0x3d, 0x20, 0x74, 0x31, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x73, 0x31, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x31, 0x2c,
-  0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x74, 0x30, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x73, 0x30,
-  0x2c, 0x20, 0x73, 0x31, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x74,
-  0x31, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x71, 0x30, 0x29, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x34, 0x20, 0x3d, 0x20, 0x32,
-  0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x30, 0x5d, 0x20, 0x2a, 0x20,
-  0x61, 0x5b, 0x33, 0x5d, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x35,
-  0x20, 0x3d, 0x20, 0x32, 0x2e, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x31,
-  0x5d, 0x20, 0x2a, 0x20, 0x61, 0x5b, 0x32, 0x5d, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x70, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f,
-  0x73, 0x75, 0x6d, 0x28, 0x70, 0x34, 0x2c, 0x20, 0x70, 0x35, 0x2c, 0x20,
-  0x26, 0x70, 0x35, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x71, 0x32,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x71,
-  0x32, 0x2c, 0x20, 0x71, 0x33, 0x2c, 0x20, 0x26, 0x71, 0x33, 0x29, 0x3b,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x74, 0x30, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x5f, 0x73, 0x75, 0x6d, 0x28, 0x70, 0x34, 0x2c, 0x20, 0x71,
-  0x32, 0x2c, 0x20, 0x26, 0x74, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x74, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x20, 0x2b, 0x20, 0x70,
-  0x35, 0x20, 0x2b, 0x20, 0x71, 0x33, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x5f, 0x73, 0x75,
-  0x6d, 0x28, 0x70, 0x33, 0x2c, 0x20, 0x74, 0x30, 0x2c, 0x20, 0x26, 0x70,
-  0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x34, 0x20, 0x3d,
-  0x20, 0x70, 0x34, 0x20, 0x2b, 0x20, 0x71, 0x30, 0x20, 0x2b, 0x20, 0x74,
-  0x31, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x6e, 0x6f,
-  0x72, 0x6d, 0x28, 0x26, 0x70, 0x30, 0x2c, 0x20, 0x26, 0x70, 0x31, 0x2c,
-  0x20, 0x26, 0x70, 0x32, 0x2c, 0x20, 0x26, 0x70, 0x33, 0x2c, 0x20, 0x26,
-  0x70, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x29, 0x28, 0x70, 0x30, 0x2c, 0x20, 0x70, 0x31, 0x2c, 0x20, 0x70, 0x32,
-  0x2c, 0x20, 0x70, 0x33, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x0a, 0x5f,
-  0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64,
-  0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67,
-  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a,
-  0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x78, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78,
-  0x34, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x31,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x32, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x33, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x34, 0x2c, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x34, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x34, 0x2c, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d,
-  0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75,
-  0x6c, 0x69, 0x61, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78,
-  0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78,
-  0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78,
-  0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78,
-  0x34, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79,
-  0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79,
-  0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79,
-  0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79,
-  0x34, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74,
-  0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70,
-  0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20,
-  0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20,
-  0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x34, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x78,
-  0x33, 0x2c, 0x20, 0x78, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x79, 0x74, 0x20, 0x3d,
-  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x79,
-  0x31, 0x2c, 0x20, 0x79, 0x32, 0x2c, 0x20, 0x79, 0x33, 0x2c, 0x20, 0x79,
-  0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x34, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x34, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77, 0x32,
-  0x2c, 0x20, 0x70, 0x77, 0x33, 0x2c, 0x20, 0x70, 0x77, 0x34, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
-  0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29,
-  0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x70,
-  0x68, 0x33, 0x2c, 0x20, 0x70, 0x68, 0x34, 0x29, 0x3b, 0x0a, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x63,
-  0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x28,
-  0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c,
-  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x20, 0x28,
-  0x70, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29,
-  0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70,
-  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a,
-  0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x63, 0x62, 0x20,
-  0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x28, 0x70, 0x69,
-  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x20, 0x28, 0x70, 0x79,
-  0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x29, 0x2c,
-  0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70,
-  0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x63,
-  0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x34, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x63, 0x62, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6a, 0x75, 0x6c, 0x69, 0x61,
-  0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x63, 0x61, 0x20, 0x3d, 0x20, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x29, 0x28, 0x6a, 0x78, 0x31, 0x2c,
-  0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x6a, 0x78, 0x33, 0x2c, 0x20, 0x6a,
-  0x78, 0x34, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x34, 0x29, 0x28, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x6a, 0x79, 0x32,
-  0x2c, 0x20, 0x6a, 0x79, 0x33, 0x2c, 0x20, 0x6a, 0x79, 0x34, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20,
-  0x3c, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x34, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x73, 0x71,
-  0x28, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x62, 0x62, 0x20,
-  0x3d, 0x20, 0x73, 0x71, 0x28, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34,
-  0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c,
-  0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x34, 0x20, 0x6d, 0x69, 0x6e,
-  0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x34, 0x29, 0x28, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x2d, 0x62, 0x62,
-  0x2e, 0x73, 0x32, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x33, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20,
-  0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x61,
-  0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c, 0x20,
-  0x63, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64,
-  0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x62,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62,
-  0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62,
-  0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d,
-  0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b,
-  0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f,
-  0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f,
-  0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20,
-  0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20,
-  0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73,
-  0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21,
-  0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f,
-  0x67, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a,
-  0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30,
-  0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20, 0x2f, 0x20, 0x32,
-  0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x28, 0x32, 0x2e, 0x30, 0x66,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65,
-  0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d,
-  0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61,
-  0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62,
-  0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35,
-  0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
-  0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20,
-  0x35, 0x3b, 0x0a, 0x7d, 0x0a
-};
-unsigned int quaddouble_cl_len = 6521;

+ 0 - 279
libmandel/src/opencl/tripledouble.h

@@ -1,279 +0,0 @@
-unsigned char tripledouble_cl[] = {
-  0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
-  0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
-  0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x23, 0x70,
-  0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x43, 0x4c,
-  0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x54,
-  0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
-  0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
-  0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d,
-  0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d,
-  0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65,
-  0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65,
-  0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20,
-  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
-  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
-  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61,
-  0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61,
-  0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x2c, 0x20,
-  0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
-  0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x68,
-  0x72, 0x65, 0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x62, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x63, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x72, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x72, 0x74, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x72, 0x74, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
-  0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x70, 0x31, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e,
-  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x62, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x33, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31,
-  0x32, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x54, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x70, 0x31, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x70,
-  0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x33, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x32, 0x2e, 0x73, 0x31,
-  0x20, 0x2b, 0x20, 0x70, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x70,
-  0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x32, 0x20,
-  0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73,
-  0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x61,
-  0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x72, 0x65, 0x30, 0x71, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b,
-  0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x31, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x74, 0x31, 0x32, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72,
-  0x65, 0x72, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x30, 0x71, 0x2e, 0x73, 0x31,
-  0x2c, 0x20, 0x74, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x29, 0x28, 0x72, 0x65, 0x30, 0x71, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x65, 0x72, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x72,
-  0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c,
-  0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x73, 0x71, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54,
-  0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x7d,
-  0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x64, 0x64, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x74, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x31,
-  0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x74, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x72, 0x74, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x74, 0x31, 0x32, 0x2e,
-  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x72, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x32,
-  0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x34, 0x2e, 0x73, 0x31,
-  0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x32, 0x20, 0x2b, 0x20, 0x62, 0x2e,
-  0x73, 0x32, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x31, 0x74, 0x34, 0x20, 0x3d,
-  0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d,
-  0x28, 0x72, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33, 0x34, 0x2e,
-  0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x72, 0x65, 0x32, 0x33, 0x20, 0x3d, 0x20,
-  0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x31, 0x74, 0x34,
-  0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x72, 0x65, 0x31, 0x74, 0x34,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x32, 0x33, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x65, 0x32, 0x33, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54, 0x4f,
-  0x44, 0x4f, 0x3a, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d,
-  0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x29, 0x28, 0x62, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20,
-  0x30, 0x2e, 0x30, 0x29, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x5f,
-  0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20,
-  0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c,
-  0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20,
-  0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78,
-  0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x31,
-  0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x32, 0x2c,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x79, 0x33, 0x2c, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x77, 0x33, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x70, 0x68, 0x33, 0x2c, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x6d, 0x61, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73,
-  0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c,
-  0x69, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
-  0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
-  0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
-  0x78, 0x33, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
-  0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
-  0x79, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a,
-  0x79, 0x33, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65,
-  0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20,
-  0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25,
-  0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64,
-  0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
-  0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x2c, 0x20,
-  0x78, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x79, 0x31, 0x2c, 0x20,
-  0x79, 0x32, 0x2c, 0x20, 0x79, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28, 0x70, 0x77, 0x31,
-  0x2c, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x70, 0x77, 0x33, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
-  0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29,
-  0x28, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x70,
-  0x68, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64,
-  0x28, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x70,
-  0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x2c, 0x20,
-  0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x78, 0x29,
-  0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69,
-  0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x2a, 0x20,
-  0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x62, 0x20, 0x3d, 0x20,
-  0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x59, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20,
-  0x70, 0x79, 0x29, 0x2c, 0x20, 0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f,
-  0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59,
-  0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x63,
-  0x61, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21, 0x3d,
-  0x20, 0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x33, 0x29, 0x20, 0x28, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78,
-  0x32, 0x2c, 0x20, 0x6a, 0x78, 0x33, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x61,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x33, 0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61,
-  0x20, 0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x20, 0x28, 0x6a, 0x79, 0x31, 0x2c,
-  0x20, 0x6a, 0x79, 0x32, 0x2c, 0x20, 0x6a, 0x79, 0x33, 0x29, 0x29, 0x20,
-  0x3a, 0x20, 0x62, 0x3b, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x6e, 0x74, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c,
-  0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c,
-  0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20,
-  0x62, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x62, 0x2c, 0x20,
-  0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x20, 0x61, 0x62, 0x20, 0x3d,
-  0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x33, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x20,
-  0x3d, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x33, 0x29, 0x28,
-  0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e,
-  0x73, 0x31, 0x2c, 0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x32, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x20, 0x3d,
-  0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x61, 0x2c,
-  0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62, 0x62, 0x29, 0x2c, 0x20, 0x63,
-  0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64, 0x64, 0x28,
-  0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29, 0x2c, 0x20, 0x63, 0x62, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
-  0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62, 0x62,
-  0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20, 0x31, 0x36, 0x29, 0x20, 0x62, 0x72,
-  0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x4e, 0x20, 0x2b, 0x20,
-  0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x28, 0x6c, 0x6f, 0x67,
-  0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29, 0x7c, 0x29, 0x20, 0x2f, 0x20,
-  0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
-  0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x20, 0x2d,
-  0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6d,
-  0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65,
-  0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69,
-  0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x20, 0x21, 0x3d,
-  0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d,
-  0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20,
-  0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x2e, 0x30, 0x66, 0x20, 0x2d, 0x20,
-  0x6c, 0x6f, 0x67, 0x32, 0x28, 0x6c, 0x6f, 0x67, 0x28, 0x61, 0x2e, 0x73,
-  0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20, 0x62,
-  0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x20,
-  0x2a, 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b,
-  0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20,
-  0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x6e, 0x29, 0x20, 0x2b,
-  0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61, 0x20, 0x2a, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x31, 0x36,
-  0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20, 0x31,
-  0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x67,
-  0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64,
-  0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20, 0x35, 0x3b, 0x0a, 0x7d, 0x0a
-};
-unsigned int tripledouble_cl_len = 3312;

+ 0 - 268
libmandel/src/opencl/triplefloat.h

@@ -1,268 +0,0 @@
-unsigned char triplefloat_cl[] = {
-  0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
-  0x43, 0x4c, 0x20, 0x46, 0x50, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x41,
-  0x43, 0x54, 0x20, 0x4f, 0x46, 0x46, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69,
-  0x6e, 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61,
-  0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x73,
-  0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x62, 0x20, 0x3d,
-  0x20, 0x73, 0x20, 0x2d, 0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x61,
-  0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29,
-  0x20, 0x2b, 0x20, 0x28, 0x62, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20,
-  0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
-  0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x65, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28, 0x73, 0x20, 0x2d,
-  0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74,
-  0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x29,
-  0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
-  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32,
-  0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x65, 0x20, 0x3d, 0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c, 0x20, 0x62,
-  0x2c, 0x20, 0x2d, 0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72,
-  0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x29, 0x28, 0x70, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x54, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x2c, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x63, 0x29, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x74, 0x20, 0x3d, 0x20, 0x74,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
-  0x72, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x32, 0x29, 0x28, 0x72, 0x74, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x74, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x72, 0x74, 0x2e, 0x73,
-  0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e,
-  0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x6d, 0x75, 0x6c,
-  0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x2c, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x70, 0x31,
-  0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x70,
-  0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28,
-  0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
-  0x70, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64,
-  0x28, 0x61, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x20, 0x74, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x68, 0x72, 0x65,
-  0x65, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x31, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x70, 0x32, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x33,
-  0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x74, 0x33, 0x20, 0x3d, 0x20, 0x74, 0x31, 0x32,
-  0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x70, 0x32, 0x2e, 0x73, 0x31, 0x20,
-  0x2b, 0x20, 0x70, 0x33, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e,
-  0x73, 0x32, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2b, 0x20,
-  0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x32, 0x20,
-  0x2b, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73,
-  0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x32, 0x20, 0x72, 0x65, 0x30, 0x71, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x31, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x74, 0x31, 0x32, 0x2e, 0x73, 0x30, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20,
-  0x72, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54,
-  0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x30, 0x71, 0x2e, 0x73,
-  0x31, 0x2c, 0x20, 0x74, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x33, 0x29, 0x28, 0x72, 0x65, 0x30, 0x71, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x72, 0x65, 0x72, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x72,
-  0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c,
-  0x69, 0x6e, 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x73,
-  0x71, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x29, 0x20,
-  0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54, 0x4f, 0x44,
-  0x4f, 0x3a, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x75,
-  0x6c, 0x28, 0x61, 0x2c, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a,
-  0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x33, 0x20, 0x61, 0x64, 0x64, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33,
-  0x20, 0x61, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x62,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x72, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x2e, 0x73,
-  0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x32, 0x20, 0x74, 0x31, 0x32, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f,
-  0x53, 0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x62, 0x2e,
-  0x73, 0x31, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x32, 0x20, 0x74, 0x33, 0x34, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x74, 0x2e, 0x73, 0x31, 0x2c, 0x20,
-  0x74, 0x31, 0x32, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x72, 0x32, 0x20, 0x3d, 0x20,
-  0x74, 0x31, 0x32, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x74, 0x33, 0x34,
-  0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e, 0x73, 0x32, 0x20, 0x2b,
-  0x20, 0x62, 0x2e, 0x73, 0x32, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x72, 0x65, 0x31, 0x74, 0x34,
-  0x20, 0x3d, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x72, 0x74, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x74, 0x33,
-  0x34, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x32, 0x20, 0x72, 0x65, 0x32, 0x33, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x72, 0x65, 0x31, 0x74,
-  0x34, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x72, 0x32, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x72, 0x65, 0x31, 0x74, 0x34,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x72, 0x65, 0x32, 0x33, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x72, 0x65, 0x32, 0x33, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x33, 0x20, 0x6d, 0x75, 0x6c, 0x53, 0x69, 0x6e, 0x67,
-  0x6c, 0x65, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x2c,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x3a,
-  0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x75, 0x6c, 0x28,
-  0x61, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28,
-  0x62, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x29,
-  0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e,
-  0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72,
-  0x61, 0x74, 0x65, 0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63,
-  0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64,
-  0x74, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x31, 0x2c, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x78, 0x33, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x79, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20,
-  0x79, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x79, 0x33,
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x70, 0x77, 0x32, 0x2c, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x70, 0x77, 0x33, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x70, 0x68, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x70, 0x68, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x70, 0x68, 0x33, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61,
-  0x78, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74,
-  0x68, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20,
-  0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x20, 0x6a, 0x78, 0x33, 0x2c, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x20, 0x6a, 0x79, 0x32, 0x2c, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x20, 0x6a, 0x79, 0x33, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20,
-  0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69,
-  0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e,
-  0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x79, 0x20, 0x3d, 0x20, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68,
-  0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x33, 0x20, 0x78, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x33, 0x29, 0x28, 0x78, 0x31, 0x2c, 0x20, 0x78, 0x32, 0x2c, 0x20,
-  0x78, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x33, 0x20, 0x79, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x79, 0x31, 0x2c, 0x20, 0x79, 0x32,
-  0x2c, 0x20, 0x79, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53,
-  0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x33, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c, 0x20, 0x70, 0x77,
-  0x32, 0x2c, 0x20, 0x70, 0x77, 0x33, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x66,
-  0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20,
-  0x70, 0x68, 0x32, 0x2c, 0x20, 0x70, 0x68, 0x33, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x20,
-  0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x53, 0x69, 0x6e,
-  0x67, 0x6c, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61,
-  0x6c, 0x65, 0x58, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
-  0x20, 0x70, 0x78, 0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f,
-  0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x62,
-  0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x53, 0x69,
-  0x6e, 0x67, 0x6c, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63,
-  0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x29, 0x20, 0x70, 0x79, 0x29, 0x2c, 0x20, 0x79, 0x74, 0x29, 0x3b, 0x20,
-  0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x74,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20,
-  0x63, 0x61, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20, 0x21,
-  0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x33, 0x29, 0x20, 0x28, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x6a, 0x78,
-  0x32, 0x2c, 0x20, 0x6a, 0x78, 0x33, 0x29, 0x29, 0x20, 0x3a, 0x20, 0x61,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33,
-  0x20, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x20,
-  0x21, 0x3d, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x33, 0x29, 0x20, 0x28, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x6a,
-  0x79, 0x32, 0x2c, 0x20, 0x6a, 0x79, 0x33, 0x29, 0x29, 0x20, 0x3a, 0x20,
-  0x62, 0x3b, 0x0a, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74,
-  0x20, 0x6e, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x20, 0x3c, 0x20, 0x6d,
-  0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33,
-  0x20, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x61, 0x2c,
-  0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x62, 0x62, 0x20, 0x3d,
-  0x20, 0x6d, 0x75, 0x6c, 0x28, 0x62, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61,
-  0x74, 0x33, 0x20, 0x61, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x28,
-  0x61, 0x2c, 0x20, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x6d, 0x69,
-  0x6e, 0x75, 0x73, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f,
-  0x61, 0x74, 0x33, 0x29, 0x28, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x2c,
-  0x20, 0x2d, 0x62, 0x62, 0x2e, 0x73, 0x31, 0x2c, 0x20, 0x2d, 0x62, 0x62,
-  0x2e, 0x73, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x61, 0x64,
-  0x64, 0x28, 0x61, 0x61, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x75, 0x73, 0x62,
-  0x62, 0x29, 0x2c, 0x20, 0x63, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64,
-  0x28, 0x61, 0x64, 0x64, 0x28, 0x61, 0x62, 0x2c, 0x20, 0x61, 0x62, 0x29,
-  0x2c, 0x20, 0x63, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x61, 0x2e, 0x73, 0x30,
-  0x20, 0x2b, 0x20, 0x62, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x3e, 0x20, 0x31,
-  0x36, 0x29, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6e, 0x2b, 0x2b, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x7d, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x2f, 0x2f,
-  0x20, 0x4e, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67,
-  0x20, 0x28, 0x6c, 0x6f, 0x67, 0x20, 0x20, 0x7c, 0x5a, 0x28, 0x4e, 0x29,
-  0x7c, 0x29, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x67, 0x20, 0x32, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x20, 0x3e, 0x3d, 0x20,
-  0x6d, 0x61, 0x78, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78,
-  0x5d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x28, 0x73, 0x6d, 0x6f, 0x6f,
-  0x74, 0x68, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69,
-  0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x2e,
-  0x30, 0x66, 0x20, 0x2d, 0x20, 0x6c, 0x6f, 0x67, 0x32, 0x28, 0x6c, 0x6f,
-  0x67, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73,
-  0x30, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x20, 0x2a, 0x20, 0x62,
-  0x2e, 0x73, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x66, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6c,
-  0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
-  0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x20, 0x6e,
-  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x41, 0x5b, 0x69, 0x6e, 0x64, 0x65,
-  0x78, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-  0x29, 0x6e, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2d, 0x20, 0x28, 0x61,
-  0x20, 0x2a, 0x20, 0x61, 0x20, 0x2b, 0x20, 0x62, 0x20, 0x2a, 0x20, 0x62,
-  0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x20, 0x2f, 0x20, 0x28, 0x32, 0x35,
-  0x36, 0x20, 0x2d, 0x20, 0x31, 0x36, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x2f, 0x2f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x41, 0x5b, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62,
-  0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x5d, 0x20, 0x3d, 0x20,
-  0x35, 0x3b, 0x0a, 0x7d, 0x0a
-};
-unsigned int triplefloat_cl_len = 3173;

+ 1 - 0
libmandel/src/opencl_template/doubledouble_prelude.cl

@@ -1,4 +1,5 @@
 #pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#pragma OPENCL FP_CONTRACT OFF
 
 inline double2 twoSum(double a, double b) {
     double s = a + b;

+ 0 - 175
libmandel/src/opencl_template/doubledouble_prelude.h

@@ -1,175 +0,0 @@
-unsigned char doubledouble_prelude_cl[] = {
-  0x23, 0x70, 0x72, 0x61, 0x67, 0x6d, 0x61, 0x20, 0x4f, 0x50, 0x45, 0x4e,
-  0x43, 0x4c, 0x20, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e,
-  0x20, 0x63, 0x6c, 0x5f, 0x6b, 0x68, 0x72, 0x5f, 0x66, 0x70, 0x36, 0x34,
-  0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x69,
-  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20,
-  0x2b, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x2d,
-  0x20, 0x61, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x28, 0x61, 0x20, 0x2d, 0x20,
-  0x28, 0x73, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x29, 0x20, 0x2b, 0x20,
-  0x28, 0x62, 0x20, 0x2d, 0x20, 0x62, 0x62, 0x29, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29,
-  0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x71, 0x75, 0x69, 0x63,
-  0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x20, 0x2b,
-  0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x62, 0x20, 0x2d, 0x20, 0x28,
-  0x73, 0x20, 0x2d, 0x20, 0x61, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x29, 0x28, 0x73, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f,
-  0x64, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x2c, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x70,
-  0x20, 0x3d, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20, 0x3d,
-  0x20, 0x66, 0x6d, 0x61, 0x28, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x2d,
-  0x70, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29,
-  0x28, 0x70, 0x2c, 0x20, 0x65, 0x29, 0x3b, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
-  0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x6d, 0x75, 0x6c, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x32, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77,
-  0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20,
-  0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70,
-  0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x28, 0x61, 0x2e, 0x73, 0x30,
-  0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x20, 0x61, 0x2e,
-  0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x71, 0x28, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x20,
-  0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e,
-  0x73, 0x30, 0x2c, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x65, 0x20,
-  0x3d, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2a,
-  0x20, 0x61, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70,
-  0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x65, 0x3b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75, 0x69,
-  0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70, 0x2e, 0x73,
-  0x30, 0x2c, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a, 0x7d, 0x0a,
-  0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x61, 0x64, 0x64, 0x28, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x73, 0x65, 0x20, 0x3d,
-  0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x61, 0x2e, 0x73, 0x30,
-  0x2c, 0x20, 0x62, 0x2e, 0x73, 0x30, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20,
-  0x20, 0x73, 0x65, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e,
-  0x73, 0x31, 0x20, 0x2b, 0x20, 0x62, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71, 0x75,
-  0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x73, 0x65,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x73, 0x65, 0x2e, 0x73, 0x31, 0x29, 0x3b,
-  0x0a, 0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x6d, 0x75, 0x6c, 0x44, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x62,
-  0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x32, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x50,
-  0x72, 0x6f, 0x64, 0x28, 0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x62, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x20, 0x2b,
-  0x3d, 0x20, 0x61, 0x2e, 0x73, 0x31, 0x20, 0x2a, 0x20, 0x62, 0x3b, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x71,
-  0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28, 0x70,
-  0x2e, 0x73, 0x30, 0x2c, 0x20, 0x70, 0x2e, 0x73, 0x31, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x64, 0x69, 0x76, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x61, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x32, 0x20, 0x62, 0x29, 0x20, 0x7b, 0x0a, 0x20, 0x20,
-  0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x71, 0x31, 0x20,
-  0x3d, 0x20, 0x61, 0x2e, 0x73, 0x30, 0x20, 0x2f, 0x20, 0x62, 0x2e, 0x73,
-  0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-  0x65, 0x32, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x75, 0x6c, 0x44, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x28, 0x62, 0x2c, 0x20, 0x71, 0x31, 0x29, 0x3b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32,
-  0x20, 0x73, 0x20, 0x3d, 0x20, 0x74, 0x77, 0x6f, 0x53, 0x75, 0x6d, 0x28,
-  0x61, 0x2e, 0x73, 0x30, 0x2c, 0x20, 0x2d, 0x72, 0x2e, 0x73, 0x30, 0x29,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x73, 0x2e, 0x73, 0x31, 0x20, 0x2d,
-  0x3d, 0x20, 0x72, 0x2e, 0x73, 0x31, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x73, 0x2e, 0x73, 0x31, 0x20, 0x2b, 0x3d, 0x20, 0x61, 0x2e, 0x73, 0x31,
-  0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-  0x20, 0x71, 0x32, 0x20, 0x3d, 0x20, 0x28, 0x73, 0x2e, 0x73, 0x30, 0x20,
-  0x2b, 0x20, 0x73, 0x2e, 0x73, 0x31, 0x29, 0x20, 0x2f, 0x20, 0x62, 0x2e,
-  0x73, 0x30, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
-  0x72, 0x6e, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x54, 0x77, 0x6f, 0x53,
-  0x75, 0x6d, 0x28, 0x71, 0x31, 0x2c, 0x20, 0x71, 0x32, 0x29, 0x3b, 0x0a,
-  0x7d, 0x0a, 0x0a, 0x5f, 0x5f, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20,
-  0x76, 0x6f, 0x69, 0x64, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65,
-  0x28, 0x5f, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6c,
-  0x6f, 0x61, 0x74, 0x2a, 0x20, 0x41, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73,
-  0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x31, 0x2c, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x20, 0x78, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75,
-  0x62, 0x6c, 0x65, 0x20, 0x79, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x20, 0x79, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x77, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x77, 0x32, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x68, 0x31, 0x2c, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20,
-  0x70, 0x68, 0x32, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x61, 0x78,
-  0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68,
-  0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-  0x69, 0x6e, 0x74, 0x20, 0x6a, 0x75, 0x6c, 0x69, 0x61, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78, 0x31, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x78, 0x32, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79, 0x31, 0x2c, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x20, 0x6a, 0x79, 0x32, 0x29, 0x20, 0x7b,
-  0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x64,
-  0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f,
-  0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0a, 0x20,
-  0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x78, 0x20, 0x3d, 0x20,
-  0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x25, 0x20, 0x77, 0x69, 0x64, 0x74,
-  0x68, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70,
-  0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x2f, 0x20,
-  0x77, 0x69, 0x64, 0x74, 0x68, 0x3b, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x78, 0x6c, 0x20, 0x3d,
-  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x78,
-  0x31, 0x2c, 0x20, 0x78, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x79, 0x74, 0x20, 0x3d,
-  0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x79,
-  0x31, 0x2c, 0x20, 0x79, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20,
-  0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x58, 0x20, 0x3d, 0x20, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x77, 0x31, 0x2c,
-  0x20, 0x70, 0x77, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c,
-  0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x29, 0x28, 0x70, 0x68, 0x31, 0x2c, 0x20,
-  0x70, 0x68, 0x32, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x64, 0x6f,
-  0x75, 0x62, 0x6c, 0x65, 0x32, 0x20, 0x63, 0x5f, 0x72, 0x65, 0x20, 0x3d,
-  0x20, 0x61, 0x64, 0x64, 0x28, 0x6d, 0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62,
-  0x6c, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c,
-  0x65, 0x58, 0x2c, 0x20, 0x28, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29,
-  0x20, 0x70, 0x78, 0x29, 0x2c, 0x20, 0x78, 0x6c, 0x29, 0x3b, 0x20, 0x2f,
-  0x2f, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65,
-  0x58, 0x20, 0x2a, 0x20, 0x70, 0x78, 0x20, 0x2b, 0x20, 0x78, 0x6c, 0x0a,
-  0x20, 0x20, 0x20, 0x20, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x32, 0x20,
-  0x63, 0x5f, 0x69, 0x6d, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x28, 0x6d,
-  0x75, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x28, 0x70, 0x69, 0x78,
-  0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x2c, 0x20, 0x28, 0x64,
-  0x6f, 0x75, 0x62, 0x6c, 0x65, 0x29, 0x20, 0x70, 0x79, 0x29, 0x2c, 0x20,
-  0x79, 0x74, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x70, 0x69, 0x78, 0x65,
-  0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x59, 0x20, 0x2a, 0x20, 0x70, 0x79,
-  0x20, 0x2b, 0x20, 0x79, 0x74, 0x0a, 0x0a
-};
-unsigned int doubledouble_prelude_cl_len = 2059;

+ 0 - 9
libmandel/src/opencl_template/makefile

@@ -1,9 +0,0 @@
-
-HEADERS := $(patsubst %.cl,%.h,$(wildcard *.cl))
-
-
-all: $(HEADERS)
-
-%.h: %.cl
-	xxd -i $< > $@
-

+ 219 - 0
libmandel/src/opencl_template/quaddouble_prelude.cl

@@ -0,0 +1,219 @@
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#pragma OPENCL FP_CONTRACT OFF
+
+inline double2 twoSum(double a, double b) {
+    double s = a + b;
+    double bb = s - a;
+    double e = (a - (s - bb)) + (b - bb);
+    return (double2)(s, e);
+}
+
+inline double two_sum(double a, double b, double* err) {
+    double s = a + b;
+    double bb = s - a;
+    *err = (a - (s - bb)) + (b - bb);
+    return s;
+}
+
+inline double2 quickTwoSum(double a, double b) {
+    double s = a + b;
+    double e = b - (s - a);
+    return (double2)(s, e);
+}
+
+inline double quick_two_sum(double a, double b, double* err) {
+  double s = a + b;
+  *err = b - (s - a);
+  return s;
+}
+
+inline double2 twoProd(double a, double b) {
+    double p = a * b;
+    double e = fma(a, b, -p);
+    return (double2)(p, e);
+}
+
+inline double two_prod(double a, double b, double* err) {
+    double p = a * b;
+    *err = fma(a, b, -p);
+    return p;
+}
+
+inline void threeSum(double* a, double* b, double* c) {
+    double2 t = twoSum(*a, *b);
+    double2 at3 = twoSum(*c, t.s0);
+    double2 bc = twoSum(t.s1, at3.s1);
+    *a = at3.s0;
+    *b = bc.s0;
+    *c = bc.s1;
+}
+
+inline void threeSum2(double* a, double* b, double* c) {
+    double2 t = twoSum(*a, *b);
+    double2 at3 = twoSum(*c, t.s0);
+    *a = at3.s0;
+    *b = t.s1 + at3.s1;
+}
+
+inline void renorm(double *c0, double *c1, 
+                   double *c2, double *c3, double *c4) {
+  double s0, s1, s2 = 0.0, s3 = 0.0;
+
+  s0 = quick_two_sum(*c3, *c4, c4);
+  s0 = quick_two_sum(*c2, s0, c3);
+  s0 = quick_two_sum(*c1, s0, c2);
+  *c0 = quick_two_sum(*c0, s0, c1);
+
+  s0 = *c0;
+  s1 = *c1;
+
+  if (s1 != 0.0) {
+    s1 = quick_two_sum(s1, *c2, &s2);
+    if (s2 != 0.0) {
+      s2 = quick_two_sum(s2, *c3, &s3);
+      if (s3 != 0.0)
+        s3 += *c4;
+      else
+        s2 = quick_two_sum(s2, *c4, &s3);
+    } else {
+      s1 = quick_two_sum(s1, *c3, &s2);
+      if (s2 != 0.0)
+        s2 = quick_two_sum(s2, *c4, &s3);
+      else
+        s1 = quick_two_sum(s1, *c4, &s2);
+    }
+  } else {
+    s0 = quick_two_sum(s0, *c2, &s1);
+    if (s1 != 0.0) {
+      s1 = quick_two_sum(s1, *c3, &s2);
+      if (s2 != 0.0)
+        s2 = quick_two_sum(s2, *c4, &s3);
+      else
+        s1 = quick_two_sum(s1, *c4, &s2);
+    } else {
+      s0 = quick_two_sum(s0, *c3, &s1);
+      if (s1 != 0.0)
+        s1 = quick_two_sum(s1, *c4, &s2);
+      else
+        s0 = quick_two_sum(s0, *c4, &s1);
+    }
+  }
+
+  *c0 = s0;
+  *c1 = s1;
+  *c2 = s2;
+  *c3 = s3;
+}
+
+
+inline double4 add(double4 a, double4 b) {
+    double s0, s1, s2, s3;
+    double t0, t1, t2, t3;
+    
+    s0 = two_sum(a[0], b[0], &t0);
+    s1 = two_sum(a[1], b[1], &t1);
+    s2 = two_sum(a[2], b[2], &t2);
+    s3 = two_sum(a[3], b[3], &t3);
+
+    s1 = two_sum(s1, t0, &t0);
+    threeSum(&s2, &t0, &t1);
+    threeSum2(&s3, &t0, &t2);
+    t0 = t0 + t1 + t3;
+
+    renorm(&s0, &s1, &s2, &s3, &t0);
+    return (double4)(s0, s1, s2, s3);
+}
+
+
+inline double4 mul(double4 a, double4 b) {
+    double p0, p1, p2, p3, p4, p5;
+    double q0, q1, q2, q3, q4, q5;
+    double t0, t1;
+    double s0, s1, s2;
+
+    p0 = two_prod(a[0], b[0], &q0);
+
+    p1 = two_prod(a[0], b[1], &q1);
+    p2 = two_prod(a[1], b[0], &q2);
+
+    p3 = two_prod(a[0], b[2], &q3);
+    p4 = two_prod(a[1], b[1], &q4);
+    p5 = two_prod(a[2], b[0], &q5);
+
+    /* Start Accumulation */
+    threeSum(&p1, &p2, &q0);
+
+    /* Six-Three Sum  of p2, q1, q2, p3, p4, p5. */
+    threeSum(&p2, &q1, &q2);
+    threeSum(&p3, &p4, &p5);
+    /* compute (s0, s1, s2) = (p2, q1, q2) + (p3, p4, p5). */
+    s0 = two_sum(p2, p3, &t0);
+    s1 = two_sum(q1, p4, &t1);
+    s2 = q2 + p5;
+    s1 = two_sum(s1, t0, &t0);
+    s2 += (t0 + t1);
+
+    /* O(eps^3) order terms */
+    s1 += a[0]*b[3] + a[1]*b[2] + a[2]*b[1] + a[3]*b[0] + q0 + q3 + q4 + q5;
+    renorm(&p0, &p1, &s0, &s1, &s2);
+    return (double4)(p0, p1, s0, s1);
+}
+
+inline double4 sq(double4 a) {
+    double p0, p1, p2, p3, p4, p5;
+    double q0, q1, q2, q3;
+    double s0, s1;
+    double t0, t1;
+    
+    p0 = two_prod(a[0], a[0], &q0);
+    p1 = two_prod(2.0 * a[0], a[1], &q1);
+    p2 = two_prod(2.0 * a[0], a[2], &q2);
+    p3 = two_prod(a[1], a[1], &q3);
+
+    p1 = two_sum(q0, p1, &q0);
+
+    q0 = two_sum(q0, q1, &q1);
+    p2 = two_sum(p2, p3, &p3);
+
+    s0 = two_sum(q0, p2, &t0);
+    s1 = two_sum(q1, p3, &t1);
+
+    s1 = two_sum(s1, t0, &t0);
+    t0 += t1;
+
+    s1 = quick_two_sum(s1, t0, &t0);
+    p2 = quick_two_sum(s0, s1, &t1);
+    p3 = quick_two_sum(t1, t0, &q0);
+
+    p4 = 2.0 * a[0] * a[3];
+    p5 = 2.0 * a[1] * a[2];
+
+    p4 = two_sum(p4, p5, &p5);
+    q2 = two_sum(q2, q3, &q3);
+
+    t0 = two_sum(p4, q2, &t1);
+    t1 = t1 + p5 + q3;
+
+    p3 = two_sum(p3, t0, &p4);
+    p4 = p4 + q0 + t1;
+
+    renorm(&p0, &p1, &p2, &p3, &p4);
+    return (double4)(p0, p1, p2, p3);
+}
+
+
+__kernel void iterate(__global float* A, const int width,
+                      double x1, double x2, double x3, double x4, double y1, double y2, double y3, double y4,
+                      double pw1, double pw2, double pw3, double pw4, double ph1, double ph2, double ph3, double ph4, int max, int smooth, int julia,
+                      double jx1, double jx2, double jx3, double jx4, double jy1, double jy2, double jy3, double jy4) {
+    int index = get_global_id(0);
+    int px = index % width;
+    int py = index / width;
+
+    double4 xl = (double4)(x1, x2, x3, x4);
+    double4 yt = (double4)(y1, y2, y3, y4);
+    double4 pixelScaleX = (double4)(pw1, pw2, pw3, pw4);
+    double4 pixelScaleY = (double4)(ph1, ph2, ph3, ph4);
+
+    double4 c_re = add(mul(pixelScaleX, (double4) (px, 0, 0, 0)), xl); // pixelScaleX * px + xl
+    double4 c_im = add(mul(pixelScaleY, (double4) (py, 0, 0, 0)), yt); // pixelScaleY * py + yt

+ 1 - 1
src/GridFlowLayout.cpp

@@ -48,7 +48,7 @@ int GridFlowLayout::count(void) const
 
 Qt::Orientations GridFlowLayout::expandingDirections(void) const
 {
-    return 0;
+    return Qt::Orientations();
 }
 
 

+ 2 - 2
translations/almond.de.ts

@@ -189,7 +189,7 @@
     <message>
         <location filename="../ui/choosegenerators.ui" line="74"/>
         <source>Run All Benchmarks</source>
-        <translation type="unfinished">Alle Leistungstests starten</translation>
+        <translation>Alle Leistungstests starten</translation>
     </message>
     <message>
         <location filename="../ui/choosegenerators.ui" line="123"/>
@@ -233,7 +233,7 @@
     <message>
         <location filename="../ui/customgenerator.ui" line="28"/>
         <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Formula Editor&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;Almond applies an escape-time algorithm to display fractals. A formula can be entered in this form, which will then be iteratively applied to complex numbers until its absolute value reaches a certain threshold. Depending on how many iterations were needed to reach the threshold, a different color is applied to the image.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;Formeleditor&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;Almond verwendet sogenannte &quot;Escape-Time-Algorithmen&quot; um Fraktale zu zeichnen. Sie können hier die Formeln für eine Folge von komplexen Zahlen eingeben, welche danach berechnet wird, bis ein gewisser &quot;Fluchtradius&quot; erreicht ist. Je nachdem, wie viele Iterationen nötig waren um den Fluchtradius zu erreichen, erhält der Punkt eine andere Farbe.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
         <location filename="../ui/customgenerator.ui" line="57"/>