From 85e2ef8c9d7cdb24715a7375e149d5d1e7d580b1 Mon Sep 17 00:00:00 2001 From: Sebastian Park Date: Mon, 6 May 2024 02:15:49 -0400 Subject: change clear colors and set input name from color to normal. --- src/glwidget.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/glwidget.cpp b/src/glwidget.cpp index c13d476..06461d0 100755 --- a/src/glwidget.cpp +++ b/src/glwidget.cpp @@ -64,7 +64,7 @@ void GLWidget::initializeGL() fprintf(stdout, "Successfully initialized GLEW %s\n", glewGetString(GLEW_VERSION)); // Set clear color to white - glClearColor(0, 0, 0, 1); + glClearColor(1, 0.98f, 0.85f, 1); // Enable depth-testing and backface culling glEnable(GL_DEPTH_TEST); @@ -168,6 +168,8 @@ void GLWidget::initializeGL() } void GLWidget::paintCaustics() { + glClearColor(0.68f, 0.58f, 0.38f, 1); + glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); // Task 15: Clear the screen here @@ -303,6 +305,7 @@ void GLWidget::makeFBO() { void GLWidget::paintGL() { paintCaustics(); + glClearColor(0.56f, 0.69f, 0.74f, 1); glBindFramebuffer(GL_FRAMEBUFFER, m_defaultFBO); // return; // paintTexture(m_ground_texture, false); -- cgit v1.2.3-70-g09d2 From dcab788763ff0af5918ca0c50538daa8bbfc84d8 Mon Sep 17 00:00:00 2001 From: Sebastian Park Date: Mon, 6 May 2024 02:23:43 -0400 Subject: make depth and skyheight uniforms. --- resources/shaders/shader.vert | 9 +++++---- src/glwidget.cpp | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/resources/shaders/shader.vert b/resources/shaders/shader.vert index 2d0bfe2..1409039 100755 --- a/resources/shaders/shader.vert +++ b/resources/shaders/shader.vert @@ -4,7 +4,8 @@ layout(location = 0) in vec3 position; // Position of the vertex layout(location = 1) in vec3 normal; // Normal of the vertex layout(location = 3) in vec3 texCoords; // Normal of the vertex - +uniform float depth = -1500.f; +uniform float skyHeight = 500.f; uniform mat4 proj; uniform mat4 view; uniform mat4 model; @@ -25,7 +26,7 @@ out vec2 uv; out float matIor; vec4 getRefrPos() { - float depth = -1000.f; // TODO: Pass as uniform +// float depth = -1000.f; // TODO: Pass as uniform vec3 w_o = normalize(pos - camera_worldSpace); float cos_theta_i = dot(-w_o, normal_worldSpace); float n_i = 1; @@ -55,11 +56,11 @@ vec4 getRefrPos() { } vec3 getReflPos() { - float depth = 500.f; // TODO: Pass as uniform +// float depth = 500.f; // TODO: Pass as uniform vec3 w_o = normalize(pos - camera_worldSpace); vec3 reflectedRay = w_o - 2 * dot(w_o, normal_worldSpace) * normal_worldSpace; - float dist = depth - position.y; + float dist = skyHeight - position.y; float depthScale = dist / reflectedRay.y; vec3 skyContactPoint = (reflectedRay * depthScale) + position; return skyContactPoint; diff --git a/src/glwidget.cpp b/src/glwidget.cpp index 06461d0..4c8696d 100755 --- a/src/glwidget.cpp +++ b/src/glwidget.cpp @@ -321,6 +321,7 @@ void GLWidget::paintGL() m_defaultShader->setUniform("widthBounds", m_arap.minCorner[0], m_arap.maxCorner[0]); m_defaultShader->setUniform("lengthBounds", m_arap.minCorner[2], m_arap.maxCorner[2]); + // Set the ocean floor to the painted caustics glActiveTexture(GL_TEXTURE2); glBindTexture(GL_TEXTURE_2D, m_fbo_texture); glUniform1i(glGetUniformLocation(m_defaultShader->id(), "groundSampler"), 2); -- cgit v1.2.3-70-g09d2 From 3d9a55316dbcfb2ca1f32f5554d1948fcabb5d74 Mon Sep 17 00:00:00 2001 From: Sebastian Park Date: Wed, 8 May 2024 01:14:11 -0400 Subject: Do some scuffed caustics. --- CMakeLists.txt.user | 2 +- resources/shaders/color.frag | 42 ++++++++++++++++++-- resources/shaders/color.vert | 92 ++++++++++++++++++++++++++++++++++++++++--- resources/shaders/shader.frag | 3 +- resources/shaders/shader.vert | 6 +-- src/glwidget.cpp | 52 ++++++++++++++---------- src/graphics/shape.cpp | 6 +-- src/ocean/ocean_alt.cpp | 11 +++--- 8 files changed, 172 insertions(+), 42 deletions(-) (limited to 'src') diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index bc65141..f9d8bd9 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/resources/shaders/color.frag b/resources/shaders/color.frag index 4a052a1..fe70983 100644 --- a/resources/shaders/color.frag +++ b/resources/shaders/color.frag @@ -1,8 +1,42 @@ -#version 330 core - -in vec3 col; +#version 410 core out vec4 fragColor; +in vec3 normal_cameraSpace; +in vec3 camera_worldSpace; +in vec3 normal_worldSpace; +in vec3 pos; +in vec3 oldPosFlat; +in float intensity; + +//uniform float multiplier = 1.f; +//uniform float contrast = 10.f; +//uniform float intExp = 0.5f; +//uniform float scale = 1.f; + +uniform float multiplier = .9f; +uniform float contrast = 20.f; +uniform float intExp = 0.f; +uniform float scale = 1.f; + +//uniform float multiplier = .5f; +//uniform float contrast = 1.5f; +//uniform float intExp = 0.f; +//uniform float scale = 1.f; + +//uniform vec4 baseColor =vec4(); + void main() { - fragColor = vec4(col, 1.0); + fragColor = 0.5f * (vec4(normal_worldSpace[0], 0.f, normal_worldSpace[2], 1.f) + 1); + float oldArea = length(dFdx(oldPosFlat)) * length(dFdy(oldPosFlat)); + float newArea = length(dFdx(pos)) * length(dFdy(pos)); + float areaRatio = oldArea / newArea * multiplier; +// if(oldArea / newArea > 3) { +// areaRatio = 0.f; +// } +// fragColor = clamp(vec4(intensity, intensity, (1.f - intensity) * .5f, intensity), 0.f, 1.f); + fragColor = vec4(pow(areaRatio, contrast)) * pow(intensity, intExp); + float finalInt = pow(areaRatio, contrast) * pow(intensity, intExp); + finalInt = clamp(finalInt, 0, 1); + fragColor = vec4(1, 1, 1, finalInt * scale); +// fragColor = vec4(vec3(1), pow(oldArea / newArea * .2f, 1.5f)); } diff --git a/resources/shaders/color.vert b/resources/shaders/color.vert index 6aa941e..677abf6 100644 --- a/resources/shaders/color.vert +++ b/resources/shaders/color.vert @@ -1,10 +1,92 @@ #version 330 core -layout (location = 0) in vec3 position; -layout (location = 1) in vec3 normal; -out vec3 col; +layout(location = 0) in vec3 position; // Position of the vertex +layout(location = 1) in vec3 normal; // Normal of the vertex +layout(location = 2) in vec3 texCoords; // Normal of the vertex + +uniform float depth = -3000.f; +uniform float skyHeight = 500.f; +uniform mat4 proj; +uniform mat4 view; +uniform mat4 model; +uniform mat4 inverseView; +//uniform float width; +//uniform float height; // TODO: Pass in width and height as uniform + +uniform mat3 inverseTransposeModel; + +out vec3 normal_cameraSpace; +out vec3 normal_worldSpace; +out vec3 camera_worldSpace; +out vec3 pos; +out float intensity; +out vec3 oldPosFlat; + +uniform vec2 widthBounds; +uniform vec2 lengthBounds; + +vec3 moveToTopDown(vec3 p) { + return vec3((p[0] - ((widthBounds[0] + widthBounds[1]) / 2)) / (widthBounds[1] - widthBounds[0]) * 2, + -(p[2] - ((lengthBounds[0] + lengthBounds[1]) / 2)) * 2 / (lengthBounds[1] - lengthBounds[0]), 0.f); +} + +vec4 refractToFloor(vec3 l, vec3 p, vec3 n, float d) { + // Refracts incoming light direction l through normal n at point p until hits floor at depth d + vec3 w_o = normalize(l); + float cos_theta_i = dot(-w_o, n); + float n_i = 1; + float n_t = 1.33f; + float determinant = 1.f - (pow((n_i / n_t), 2.f) * (1.f - pow(cos_theta_i, 2.f))); + + float r0 = pow((n_i - n_t) / (n_i + n_t), 2.f); // variable required to calculate probability of reflection + float prob_to_refl = r0 + ((1 - r0) * pow((1 - cos_theta_i), 5.f)); + + if (determinant >= 0) { + float cos_theta_t = sqrt(determinant); + vec3 w_t = (n_i / n_t) * w_o + ((n_i / n_t) * cos_theta_i - cos_theta_t) * n; + float dist = p.y - d; + float depthScale = dist / w_t.y; + vec3 groundContactPoint = -(w_t * depthScale) + p; + return vec4(groundContactPoint, 1.f - prob_to_refl); + } else { + return vec4(0, 0, 0, 0); + } +} + +vec3 wrapGL(vec3 p) { + float newX = p[0]; + float newY = p[1]; + + newX = mod(newX + 1.f, 2.f) - 1.f; + + newY = mod(newY + 1.f, 2.f) - 1.f; + + return vec3(newX, newY, 0.f); +} void main() { - gl_Position = vec4(position, 1.0); - col = normal; + normal_cameraSpace = normalize(inverse(transpose(mat3(view))) * inverseTransposeModel * normal); + camera_worldSpace = vec3(inverseView * vec4(0.f, 0.f, 0.f, 1.f)); + normal_worldSpace = normal; + pos = vec3(model * vec4(position, 1.f)); //vec3(model * vec4(objSpacePos, 1.f)); + vec3 lightDir = -normalize(vec3(1, -1, 1)); + + gl_Position = proj * view * model * vec4(position, 1); + +// gl_Position = vec4((position[0] - ((widthBounds[0] + widthBounds[1]) / 2)) / (widthBounds[1] - widthBounds[0]) * 2, +// (position[2] - ((lengthBounds[0] + lengthBounds[1]) / 2)) / (lengthBounds[1] - lengthBounds[0]) * 2, 0.f, 1.f); + float newX = mod(int(position[0]), 3) - 1; + float newY = mod(int(position[2]), 3) - 1; + + vec4 refractedPositionAndProb = refractToFloor(-lightDir, position, normal_worldSpace, depth); + + float waterMurkiness = .002f; + + gl_Position = vec4(newX, newY, 0.f, 1.f); + + intensity = refractedPositionAndProb[3] * clamp(dot(normal_worldSpace, lightDir), 0.f, 1.f) * exp(-length((position - vec3(refractedPositionAndProb))) * waterMurkiness); + + oldPosFlat = moveToTopDown(position); + pos = moveToTopDown(vec3(refractedPositionAndProb)); + gl_Position = vec4(pos, 1.f); } diff --git a/resources/shaders/shader.frag b/resources/shaders/shader.frag index 6d1bc57..88c783d 100755 --- a/resources/shaders/shader.frag +++ b/resources/shaders/shader.frag @@ -70,7 +70,8 @@ void main() { vec2 refrUV = uvFromWorldPoint(refrPos); vec2 reflUV = uvFromWorldPoint(reflPos); - float waterMurkiness = 0.002f; // TODO: Make uniform +// float waterMurkiness = 0.002f; // TODO: Make uniform + float waterMurkiness = 0.0005f; // TODO: Make uniform vec3 waterVolumeColor = vec3(red * 0.1f, green * 0.2f, blue * 0.2f); float murkDiffuse = 0.3f; float murkAmbient = 0.8f; diff --git a/resources/shaders/shader.vert b/resources/shaders/shader.vert index 1409039..3cd5c17 100755 --- a/resources/shaders/shader.vert +++ b/resources/shaders/shader.vert @@ -2,9 +2,9 @@ layout(location = 0) in vec3 position; // Position of the vertex layout(location = 1) in vec3 normal; // Normal of the vertex -layout(location = 3) in vec3 texCoords; // Normal of the vertex +layout(location = 2) in vec3 texCoords; // Normal of the vertex -uniform float depth = -1500.f; +uniform float depth = -3000.f; uniform float skyHeight = 500.f; uniform mat4 proj; uniform mat4 view; @@ -26,7 +26,7 @@ out vec2 uv; out float matIor; vec4 getRefrPos() { -// float depth = -1000.f; // TODO: Pass as uniform +// float depth = -1500.f; // TODO: Pass as uniform vec3 w_o = normalize(pos - camera_worldSpace); float cos_theta_i = dot(-w_o, normal_worldSpace); float n_i = 1; diff --git a/src/glwidget.cpp b/src/glwidget.cpp index 4c8696d..bac695c 100755 --- a/src/glwidget.cpp +++ b/src/glwidget.cpp @@ -68,8 +68,8 @@ void GLWidget::initializeGL() // Enable depth-testing and backface culling glEnable(GL_DEPTH_TEST); - glEnable(GL_CULL_FACE); - glCullFace(GL_BACK); +// glEnable(GL_CULL_FACE); +// glCullFace(GL_BACK); // glShadeModel(GL_SMOOTH); @@ -169,30 +169,38 @@ void GLWidget::initializeGL() void GLWidget::paintCaustics() { glClearColor(0.68f, 0.58f, 0.38f, 1); +// glClearColor(0., 0., 0., 1); glBindFramebuffer(GL_FRAMEBUFFER, m_fbo); +// glBindFramebuffer(GL_FRAMEBUFFER, m_defaultFBO); - // Task 15: Clear the screen here - - // TA SOLUTION + // Clear Screen glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable( GL_BLEND ); - // Bind the shader - m_colorShader->bind(); +// // Bind the shader +// m_colorShader->bind(); - // Task 16: Bind your VAO here +//// m_colorShader->setUniform("asdf", m_arap.minCorner[0], m_arap.maxCorner[0]); +//// // Bind VAO +// glBindVertexArray(m_floor_vao); - // TA SOLUTION - glBindVertexArray(m_floor_vao); - - // Task 17: Draw your VAO here +//// // Draw the VAO +// glDrawArrays(GL_TRIANGLES, 0, 3); - // TA SOLUTION - glDrawArrays(GL_TRIANGLES, 0, 3); - - // Task 18: Unbind your VAO here + m_colorShader->bind(); + // + m_colorShader->setUniform("proj", m_camera.getProjection()); + m_colorShader->setUniform("view", m_camera.getView()); + Eigen::Matrix4f inverseView = m_camera.getView().inverse(); + m_colorShader->setUniform("inverseView", inverseView); + // + m_colorShader->setUniform("widthBounds", m_arap.minCorner[0], m_arap.maxCorner[0]); + m_colorShader->setUniform("lengthBounds", m_arap.minCorner[2], m_arap.maxCorner[2]); + m_arap.draw(m_colorShader, GL_TRIANGLES); - // TA SOLUTION + // Unbind the VAO glBindVertexArray(0); // Unbind the shader @@ -309,9 +317,9 @@ void GLWidget::paintGL() glBindFramebuffer(GL_FRAMEBUFFER, m_defaultFBO); // return; // paintTexture(m_ground_texture, false); -// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); -// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -// glEnable( GL_BLEND ); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable( GL_BLEND ); m_defaultShader->bind(); m_defaultShader->setUniform("proj", m_camera.getProjection()); @@ -345,6 +353,10 @@ void GLWidget::resizeGL(int w, int h) { glViewport(0, 0, w, h); m_camera.setAspect(static_cast(w) / h); + glDeleteTextures(1, &m_fbo_texture); + glDeleteRenderbuffers(1, &m_fbo_renderbuffer); + glDeleteFramebuffers(1, &m_fbo); + makeFBO(); } // ================== Event Listeners diff --git a/src/graphics/shape.cpp b/src/graphics/shape.cpp index 7a33140..4b1d4d4 100644 --- a/src/graphics/shape.cpp +++ b/src/graphics/shape.cpp @@ -138,13 +138,13 @@ void Shape::draw(Shader *shader, GLenum mode) // Not that one texture is overwriting the other, because if we just load sky it doesn't work // Draws whatever is bound to texture0 no matter what. // Drawing the ground texture. - /* // When ground is being rendered dynamically, don't use static ground image. +/* // When ground is being rendered dynamically, don't use static ground image. glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, m_ground_texture); // glBindTexture(GL_TEXTURE_2D, 0); shader->setUniform("groundSampler", 0); - glUniform1i(glGetUniformLocation(shader->id(), "groundSampler"), 0); - */ + glUniform1i(glGetUniformLocation(shader->id(), "groundSampler"), 0);*/ + // https://stackoverflow.com/questions/67277087/opengl-glsl-multiple-texture-binding-not-working // FIGURED OUT THE PROBLEM. it was that SAMPLERS WERE DEFAULTING TO SLOT 0 AND SETUNIFORM WASN'T WORKING diff --git a/src/ocean/ocean_alt.cpp b/src/ocean/ocean_alt.cpp index 025e89b..ca080cd 100644 --- a/src/ocean/ocean_alt.cpp +++ b/src/ocean/ocean_alt.cpp @@ -43,7 +43,8 @@ void ocean_alt::init_wave_index_constants(){ m_waveIndexConstants[i] = wave_const; // initialize m_current_h to be h0 for now - m_current_h.push_back(h0_prime); +// m_current_h.push_back(h0_prime); + m_current_h.push_back(Eigen::Vector2d(0.0, 0.0)); m_displacements.push_back(Eigen::Vector2d(0.0, 0.0)); m_slopes.push_back(Eigen::Vector2d(0.0, 0.0)); m_normals.push_back(Eigen::Vector3f(0.0, 1.0, 0.0)); @@ -269,11 +270,11 @@ std::vector ocean_alt::get_vertices() float ys = 1.f + s[1]*s[1]; float zs = 1.f + s[2]*s[2]; -// Eigen::Vector3f diff = y - s; -// Eigen::Vector3f norm = Eigen::Vector3f(diff[0]/ sqrt(xs), diff[1]/ sqrt(ys), diff[2]/sqrt(zs)); + Eigen::Vector3f diff = y - s; + Eigen::Vector3f norm = Eigen::Vector3f(diff[0]/ sqrt(xs), diff[1]/ sqrt(ys), diff[2]/sqrt(zs)); // NEW - Eigen::Vector3f norm = Eigen::Vector3f(-slope[0], 1.0, -slope[1]); +// Eigen::Vector3f norm = Eigen::Vector3f(-slope[0], 1.0, -slope[1]); norm.normalize(); //NEW @@ -450,4 +451,4 @@ std::vector ocean_alt::fast_fft } return h; -} \ No newline at end of file +} -- cgit v1.2.3-70-g09d2 From 0d6b3ded83f583a858368b1bbceda60ba65453a2 Mon Sep 17 00:00:00 2001 From: sotech117 Date: Thu, 9 May 2024 15:29:13 -0400 Subject: fix spacing on wave, fix normals and displacement, add retiling --- cmake-build-debug/.ninja_deps | Bin 528124 -> 739504 bytes cmake-build-debug/.ninja_log | 125 +-- cmake-build-debug/.rcc/Resources.qrc | 2 + cmake-build-debug/.rcc/qrc_Resources.cpp | 1062 +++++++++++++------- .../CMakeFiles/ocean_autogen.dir/ParseCache.txt | 6 +- cmake-build-debug/Testing/Temporary/LastTest.log | 4 +- cmake-build-debug/build.ninja | 4 +- cmake-build-debug/ocean | Bin 8772280 -> 8748664 bytes src/arap.cpp | 16 +- src/ocean/ocean_alt.cpp | 213 ++-- src/ocean/ocean_alt.h | 26 +- 11 files changed, 921 insertions(+), 537 deletions(-) (limited to 'src') diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 81bd2d5..b1b950d 100644 Binary files a/cmake-build-debug/.ninja_deps and b/cmake-build-debug/.ninja_deps differ diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 051ba0e..371a403 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,88 +1,41 @@ # ninja log v5 -12 41 1714798632131430431 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/StaticGLEW_autogen/timestamp dc143b4497306125 -1645 4059 1714849325058746610 CMakeFiles/ocean.dir/src/mainwindow.cpp.o b8eab0029b0c2d42 -78 110 1712645727876186134 CMakeFiles/StaticGLEW.dir/StaticGLEW_autogen/mocs_compilation.cpp.o cf14dd1335b34a8d -5173 6594 1714798638674541274 CMakeFiles/ocean.dir/src/graphics/shape.cpp.o fad1395b11fceaa7 -1647 4944 1714849325940198995 CMakeFiles/ocean.dir/cmake-build-debug/.rcc/qrc_Resources.cpp.o 5414beaf8d128308 -4944 5062 1714849326069646592 ocean 90ea6245b9d0c531 -1645 4083 1714849325084208159 CMakeFiles/ocean.dir/src/main.cpp.o 11d1d3bb5133c4bd -1646 4515 1714849325508570672 CMakeFiles/ocean.dir/src/glwidget.cpp.o b59369eca2fe4e32 -3358 3439 1714798635528627000 libStaticGLEW.a 8b4a852037c57830 -5173 5621 1714798637703869673 CMakeFiles/ocean.dir/src/graphics/graphicsdebug.cpp.o bf7241321ed3a409 -12 41 1714798632131430431 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/StaticGLEW_autogen/mocs_compilation.cpp dc143b4497306125 -12 41 1714798632131430431 StaticGLEW_autogen/mocs_compilation.cpp dc143b4497306125 -1904 5414 1712645733171665244 CMakeFiles/ocean.dir/src/graphics/meshloader.cpp.o 64961778db90f56 -12 41 1714798632131430431 StaticGLEW_autogen/timestamp dc143b4497306125 -1 208 1714786291867142933 build.ninja dbd6bd50c232cbc4 -13 1443 1714849322439247000 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -1444 1644 1714849322652629849 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/.rcc/qrc_Resources.cpp e023bb8377457e1b -42 3358 1714798635444441414 CMakeFiles/StaticGLEW.dir/glew/src/glew.c.o 4784775df883673d -13 1443 1714849322439247000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 +2947 4344 1715274669529296463 CMakeFiles/ocean.dir/src/ocean/ocean.cpp.o 960e422714c6a8ba +1848 2039 1715274667230803612 .rcc/qrc_Resources.cpp e023bb8377457e1b +54 1003 1715281217677853384 CMakeFiles/ocean.dir/src/ocean/ocean_alt.cpp.o ad7112753002ff6a +1461 4462 1715280373353844511 CMakeFiles/ocean.dir/src/arap.cpp.o 46f485071c8cb61b +1452 4403 1715280373286798214 CMakeFiles/ocean.dir/ocean_autogen/mocs_compilation.cpp.o a0b6000c88b7e2e0 +13 50 1715281216730706979 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +2046 4734 1715274669919280047 CMakeFiles/ocean.dir/src/graphics/shader.cpp.o 267b6ae673a33204 +13 50 1715281216730706979 ocean_autogen/timestamp 43dd0284b7c480b9 1899 4665 1712645732404853458 CMakeFiles/ocean.dir/src/graphics/camera.cpp.o d624ce2b01ab1415 -13 1443 1714849322439247000 ocean_autogen/timestamp 43dd0284b7c480b9 -13 1443 1714849322439247000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -1644 3711 1714849324706874005 CMakeFiles/ocean.dir/ocean_autogen/mocs_compilation.cpp.o a0b6000c88b7e2e0 -5173 6446 1714798638528665913 CMakeFiles/ocean.dir/src/graphics/shader.cpp.o 267b6ae673a33204 -1646 3824 1714849324823821994 CMakeFiles/ocean.dir/src/arap.cpp.o 46f485071c8cb61b -1444 1644 1714849322652629849 .rcc/qrc_Resources.cpp e023bb8377457e1b -5622 6431 1714798638512399688 CMakeFiles/ocean.dir/src/ocean/ocean.cpp.o 960e422714c6a8ba -1647 2974 1714849323972820909 CMakeFiles/ocean.dir/src/ocean/ocean_alt.cpp.o ad7112753002ff6a -12 1343 1714849489919521000 ocean_autogen/timestamp 43dd0284b7c480b9 -12 1343 1714849489919521000 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 1343 1714849489919521000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -12 1343 1714849489919521000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -1343 3058 1714849491634745870 CMakeFiles/ocean.dir/src/mainwindow.cpp.o b8eab0029b0c2d42 -1344 3066 1714849491644097365 CMakeFiles/ocean.dir/src/main.cpp.o 11d1d3bb5133c4bd -1343 3071 1714849491648431194 CMakeFiles/ocean.dir/ocean_autogen/mocs_compilation.cpp.o a0b6000c88b7e2e0 -12 54 1714849512803933609 ocean_autogen/timestamp 43dd0284b7c480b9 -12 54 1714849512803933609 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 54 1714849512803933609 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -12 54 1714849512803933609 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -59 2256 1714849514995444844 CMakeFiles/ocean.dir/src/glwidget.cpp.o b59369eca2fe4e32 -2256 2378 1714849515124708731 ocean 90ea6245b9d0c531 -12 48 1714849546910108212 ocean_autogen/timestamp 43dd0284b7c480b9 -12 48 1714849546910108212 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 48 1714849546910108212 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -12 48 1714849546910108212 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 903 1714849585867613000 ocean_autogen/timestamp 43dd0284b7c480b9 -12 903 1714849585867613000 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 903 1714849585867613000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -12 903 1714849585867613000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -13 1371 1714849679964127000 ocean_autogen/timestamp 43dd0284b7c480b9 -13 1371 1714849679964127000 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -13 1371 1714849679964127000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -13 1371 1714849679964127000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 1419 1714849740909476000 ocean_autogen/timestamp 43dd0284b7c480b9 -12 1419 1714849740909476000 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 1419 1714849740909476000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -12 1419 1714849740909476000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -1420 3366 1714849742859070429 CMakeFiles/ocean.dir/src/main.cpp.o 11d1d3bb5133c4bd -1419 3374 1714849742869732936 CMakeFiles/ocean.dir/ocean_autogen/mocs_compilation.cpp.o a0b6000c88b7e2e0 -1419 3406 1714849742902087877 CMakeFiles/ocean.dir/src/mainwindow.cpp.o b8eab0029b0c2d42 -1421 3822 1714849743317925525 CMakeFiles/ocean.dir/src/glwidget.cpp.o b59369eca2fe4e32 -3822 3938 1714849743440390980 ocean 90ea6245b9d0c531 -13 50 1714849812101018777 ocean_autogen/timestamp 43dd0284b7c480b9 -13 50 1714849812101018777 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -13 50 1714849812101018777 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -13 50 1714849812101018777 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -55 2158 1714849814198824051 CMakeFiles/ocean.dir/src/glwidget.cpp.o b59369eca2fe4e32 -2159 2268 1714849814316943052 ocean 90ea6245b9d0c531 -12 47 1714849854255275738 ocean_autogen/timestamp 43dd0284b7c480b9 -12 47 1714849854255275738 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 47 1714849854255275738 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -12 47 1714849854255275738 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -52 2271 1714849856467743692 CMakeFiles/ocean.dir/src/glwidget.cpp.o b59369eca2fe4e32 -2271 2381 1714849856586742326 ocean 90ea6245b9d0c531 -12 1395 1714850004866419000 ocean_autogen/timestamp 43dd0284b7c480b9 -12 1395 1714850004866419000 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 1395 1714850004866419000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -12 1395 1714850004866419000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -1395 3342 1714850006815112363 CMakeFiles/ocean.dir/ocean_autogen/mocs_compilation.cpp.o a0b6000c88b7e2e0 -1395 3348 1714850006819452984 CMakeFiles/ocean.dir/src/mainwindow.cpp.o b8eab0029b0c2d42 -1396 3357 1714850006832743054 CMakeFiles/ocean.dir/src/main.cpp.o 11d1d3bb5133c4bd -12 49 1714850057707318528 ocean_autogen/timestamp 43dd0284b7c480b9 -12 49 1714850057707318528 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -12 49 1714850057707318528 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 -12 49 1714850057707318528 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 -53 2317 1714850059965615495 CMakeFiles/ocean.dir/src/glwidget.cpp.o b59369eca2fe4e32 -2317 2433 1714850060089833714 ocean 90ea6245b9d0c531 +1848 2039 1715274667230803612 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/.rcc/qrc_Resources.cpp e023bb8377457e1b +0 312 1715274665170073627 build.ninja dbd6bd50c232cbc4 +13 50 1715281216730706979 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +13 50 1715281216730706979 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 +39 439 1715274665627645867 CMakeFiles/StaticGLEW.dir/glew/src/glew.c.o 4784775df883673d +13 38 1715274665230530986 StaticGLEW_autogen/timestamp dc143b4497306125 +1904 5414 1712645733171665244 CMakeFiles/ocean.dir/src/graphics/meshloader.cpp.o 64961778db90f56 +13 38 1715274665230530986 StaticGLEW_autogen/mocs_compilation.cpp dc143b4497306125 +13 38 1715274665230530986 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/StaticGLEW_autogen/mocs_compilation.cpp dc143b4497306125 +2043 2947 1715274668133653802 CMakeFiles/ocean.dir/src/graphics/graphicsdebug.cpp.o bf7241321ed3a409 +439 519 1715274665712161000 libStaticGLEW.a 8b4a852037c57830 +1003 1128 1715281217805809420 ocean 90ea6245b9d0c531 +4734 7910 1715274673090001677 CMakeFiles/ocean.dir/cmake-build-debug/.rcc/qrc_Resources.cpp.o 5414beaf8d128308 +1465 4774 1715280373664251970 CMakeFiles/ocean.dir/src/glwidget.cpp.o b59369eca2fe4e32 +1454 4406 1715280373288458479 CMakeFiles/ocean.dir/src/main.cpp.o 11d1d3bb5133c4bd +2048 5185 1715274670365151792 CMakeFiles/ocean.dir/src/graphics/shape.cpp.o fad1395b11fceaa7 +78 110 1712645727876186134 CMakeFiles/StaticGLEW.dir/StaticGLEW_autogen/mocs_compilation.cpp.o cf14dd1335b34a8d +1453 4308 1715280373192267033 CMakeFiles/ocean.dir/src/mainwindow.cpp.o b8eab0029b0c2d42 +13 38 1715274665230530986 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/StaticGLEW_autogen/timestamp dc143b4497306125 +12 50 1715281268927907042 ocean_autogen/timestamp 43dd0284b7c480b9 +12 50 1715281268927907042 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +12 50 1715281268927907042 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 +12 50 1715281268927907042 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +55 1023 1715281269895587725 CMakeFiles/ocean.dir/src/ocean/ocean_alt.cpp.o ad7112753002ff6a +1023 1134 1715281270009164793 ocean 90ea6245b9d0c531 +16 64 1715281338252186848 ocean_autogen/timestamp 43dd0284b7c480b9 +16 64 1715281338252186848 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +16 64 1715281338252186848 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 +16 64 1715281338252186848 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +69 1286 1715281339468067863 CMakeFiles/ocean.dir/src/ocean/ocean_alt.cpp.o ad7112753002ff6a +1286 1448 1715281339634009005 ocean 90ea6245b9d0c531 diff --git a/cmake-build-debug/.rcc/Resources.qrc b/cmake-build-debug/.rcc/Resources.qrc index d9e170f..8cf8334 100755 --- a/cmake-build-debug/.rcc/Resources.qrc +++ b/cmake-build-debug/.rcc/Resources.qrc @@ -15,6 +15,8 @@ /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/anchorPoint.frag /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/texture.vert /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/texture.frag + /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/color.vert + /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/color.frag diff --git a/cmake-build-debug/.rcc/qrc_Resources.cpp b/cmake-build-debug/.rcc/qrc_Resources.cpp index 32602c5..aea2901 100644 --- a/cmake-build-debug/.rcc/qrc_Resources.cpp +++ b/cmake-build-debug/.rcc/qrc_Resources.cpp @@ -7,7 +7,305 @@ *****************************************************************************/ static const unsigned char qt_resource_data[] = { - // /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/texture.vert + // /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/color.vert + 0x0,0x0,0xc,0xf2, + 0x23, + 0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x20,0x63,0x6f,0x72,0x65, + 0xa,0xa,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, + 0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x20,0x2f,0x2f,0x20,0x50,0x6f,0x73,0x69, + 0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x76,0x65,0x72,0x74, + 0x65,0x78,0xa,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, + 0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20, + 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x20,0x20,0x20,0x2f,0x2f,0x20,0x4e,0x6f,0x72, + 0x6d,0x61,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x76,0x65,0x72,0x74,0x65, + 0x78,0xa,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, + 0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x74, + 0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x73,0x3b,0x20,0x20,0x20,0x2f,0x2f,0x20,0x4e, + 0x6f,0x72,0x6d,0x61,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x76,0x65,0x72, + 0x74,0x65,0x78,0xa,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x2d,0x33,0x30,0x30,0x30, + 0x2e,0x66,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x73,0x6b,0x79,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x35,0x30, + 0x30,0x2e,0x66,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x61,0x74, + 0x34,0x20,0x70,0x72,0x6f,0x6a,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, + 0x6d,0x61,0x74,0x34,0x20,0x76,0x69,0x65,0x77,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f, + 0x72,0x6d,0x20,0x6d,0x61,0x74,0x34,0x20,0x6d,0x6f,0x64,0x65,0x6c,0x3b,0xa,0x75, + 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x61,0x74,0x34,0x20,0x69,0x6e,0x76,0x65, + 0x72,0x73,0x65,0x56,0x69,0x65,0x77,0x3b,0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f, + 0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa, + 0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a, + 0x20,0x50,0x61,0x73,0x73,0x20,0x69,0x6e,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x61, + 0x6e,0x64,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x61,0x73,0x20,0x75,0x6e,0x69, + 0x66,0x6f,0x72,0x6d,0xa,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x61, + 0x74,0x33,0x20,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x70, + 0x6f,0x73,0x65,0x4d,0x6f,0x64,0x65,0x6c,0x3b,0xa,0xa,0x6f,0x75,0x74,0x20,0x76, + 0x65,0x63,0x33,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x63,0x61,0x6d,0x65,0x72, + 0x61,0x53,0x70,0x61,0x63,0x65,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33, + 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61, + 0x63,0x65,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d, + 0x65,0x72,0x61,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x3b,0xa, + 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f,0x73,0x3b,0xa,0x6f,0x75, + 0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, + 0x79,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x6c,0x64,0x50, + 0x6f,0x73,0x46,0x6c,0x61,0x74,0x3b,0xa,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, + 0x20,0x76,0x65,0x63,0x32,0x20,0x77,0x69,0x64,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64, + 0x73,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x32,0x20, + 0x6c,0x65,0x6e,0x67,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x3b,0xa,0xa,0x76, + 0x65,0x63,0x33,0x20,0x6d,0x6f,0x76,0x65,0x54,0x6f,0x54,0x6f,0x70,0x44,0x6f,0x77, + 0x6e,0x28,0x76,0x65,0x63,0x33,0x20,0x70,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x70,0x5b,0x30, + 0x5d,0x20,0x2d,0x20,0x28,0x28,0x77,0x69,0x64,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64, + 0x73,0x5b,0x30,0x5d,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x42,0x6f,0x75,0x6e, + 0x64,0x73,0x5b,0x31,0x5d,0x29,0x20,0x2f,0x20,0x32,0x29,0x29,0x20,0x2f,0x20,0x28, + 0x77,0x69,0x64,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b,0x31,0x5d,0x20,0x2d, + 0x20,0x77,0x69,0x64,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b,0x30,0x5d,0x29, + 0x20,0x2a,0x20,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x2d,0x28,0x70,0x5b,0x32,0x5d,0x20,0x2d,0x20,0x28,0x28,0x6c,0x65,0x6e, + 0x67,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b,0x30,0x5d,0x20,0x2b,0x20,0x6c, + 0x65,0x6e,0x67,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b,0x31,0x5d,0x29,0x20, + 0x2f,0x20,0x32,0x29,0x29,0x20,0x2a,0x20,0x32,0x20,0x2f,0x20,0x28,0x6c,0x65,0x6e, + 0x67,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b,0x31,0x5d,0x20,0x2d,0x20,0x6c, + 0x65,0x6e,0x67,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b,0x30,0x5d,0x29,0x2c, + 0x20,0x30,0x2e,0x66,0x29,0x3b,0xa,0x7d,0xa,0xa,0x76,0x65,0x63,0x34,0x20,0x72, + 0x65,0x66,0x72,0x61,0x63,0x74,0x54,0x6f,0x46,0x6c,0x6f,0x6f,0x72,0x28,0x76,0x65, + 0x63,0x33,0x20,0x6c,0x2c,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x2c,0x20,0x76,0x65, + 0x63,0x33,0x20,0x6e,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x29,0x20,0x7b, + 0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x52,0x65,0x66,0x72,0x61,0x63,0x74,0x73, + 0x20,0x69,0x6e,0x63,0x6f,0x6d,0x69,0x6e,0x67,0x20,0x6c,0x69,0x67,0x68,0x74,0x20, + 0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x20,0x74,0x68,0x72,0x6f, + 0x75,0x67,0x68,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x6e,0x20,0x61,0x74,0x20, + 0x70,0x6f,0x69,0x6e,0x74,0x20,0x70,0x20,0x75,0x6e,0x74,0x69,0x6c,0x20,0x68,0x69, + 0x74,0x73,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x20,0x61,0x74,0x20,0x64,0x65,0x70,0x74, + 0x68,0x20,0x64,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x5f,0x6f, + 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x6c,0x29,0x3b, + 0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x5f,0x74, + 0x68,0x65,0x74,0x61,0x5f,0x69,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x2d,0x77,0x5f, + 0x6f,0x2c,0x20,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x6e,0x5f,0x69,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x6e,0x5f,0x74,0x20,0x3d,0x20,0x31,0x2e,0x33,0x33,0x66,0x3b, + 0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x74,0x65,0x72, + 0x6d,0x69,0x6e,0x61,0x6e,0x74,0x20,0x3d,0x20,0x31,0x2e,0x66,0x20,0x2d,0x20,0x28, + 0x70,0x6f,0x77,0x28,0x28,0x6e,0x5f,0x69,0x20,0x2f,0x20,0x6e,0x5f,0x74,0x29,0x2c, + 0x20,0x32,0x2e,0x66,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x66,0x20,0x2d,0x20,0x70, + 0x6f,0x77,0x28,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61,0x5f,0x69,0x2c,0x20, + 0x32,0x2e,0x66,0x29,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x72,0x30,0x20,0x3d,0x20,0x70,0x6f,0x77,0x28,0x28,0x6e,0x5f,0x69, + 0x20,0x2d,0x20,0x6e,0x5f,0x74,0x29,0x20,0x2f,0x20,0x28,0x6e,0x5f,0x69,0x20,0x2b, + 0x20,0x6e,0x5f,0x74,0x29,0x2c,0x20,0x32,0x2e,0x66,0x29,0x3b,0x20,0x2f,0x2f,0x20, + 0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65, + 0x64,0x20,0x74,0x6f,0x20,0x63,0x61,0x6c,0x63,0x75,0x6c,0x61,0x74,0x65,0x20,0x70, + 0x72,0x6f,0x62,0x61,0x62,0x69,0x6c,0x69,0x74,0x79,0x20,0x6f,0x66,0x20,0x72,0x65, + 0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x70,0x72,0x6f,0x62,0x5f,0x74,0x6f,0x5f,0x72,0x65,0x66,0x6c,0x20, + 0x3d,0x20,0x72,0x30,0x20,0x2b,0x20,0x28,0x28,0x31,0x20,0x2d,0x20,0x72,0x30,0x29, + 0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x28,0x31,0x20,0x2d,0x20,0x63,0x6f,0x73,0x5f, + 0x74,0x68,0x65,0x74,0x61,0x5f,0x69,0x29,0x2c,0x20,0x35,0x2e,0x66,0x29,0x29,0x3b, + 0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64,0x65,0x74,0x65,0x72,0x6d, + 0x69,0x6e,0x61,0x6e,0x74,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x5f, + 0x74,0x68,0x65,0x74,0x61,0x5f,0x74,0x20,0x3d,0x20,0x73,0x71,0x72,0x74,0x28,0x64, + 0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x61,0x6e,0x74,0x29,0x3b,0xa,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x5f,0x74,0x20,0x3d,0x20, + 0x28,0x6e,0x5f,0x69,0x20,0x2f,0x20,0x6e,0x5f,0x74,0x29,0x20,0x2a,0x20,0x77,0x5f, + 0x6f,0x20,0x2b,0x20,0x28,0x28,0x6e,0x5f,0x69,0x20,0x2f,0x20,0x6e,0x5f,0x74,0x29, + 0x20,0x2a,0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61,0x5f,0x69,0x20,0x2d, + 0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61,0x5f,0x74,0x29,0x20,0x2a,0x20, + 0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x64,0x69,0x73,0x74,0x20,0x3d,0x20,0x70,0x2e,0x79,0x20,0x2d,0x20,0x64,0x3b, + 0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64, + 0x65,0x70,0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x64,0x69,0x73,0x74, + 0x20,0x2f,0x20,0x77,0x5f,0x74,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6e, + 0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d,0x20,0x2d,0x28,0x77,0x5f, + 0x74,0x20,0x2a,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x29,0x20, + 0x2b,0x20,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x76,0x65,0x63,0x34,0x28,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43, + 0x6f,0x6e,0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x2c,0x20,0x31,0x2e,0x66, + 0x20,0x2d,0x20,0x70,0x72,0x6f,0x62,0x5f,0x74,0x6f,0x5f,0x72,0x65,0x66,0x6c,0x29, + 0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x65, + 0x63,0x34,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa, + 0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x76,0x65,0x63,0x33,0x20,0x77,0x72, + 0x61,0x70,0x47,0x4c,0x28,0x76,0x65,0x63,0x33,0x20,0x70,0x29,0x20,0x7b,0xa,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6e,0x65,0x77,0x58,0x20,0x3d,0x20, + 0x70,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x6e,0x65,0x77,0x59,0x20,0x3d,0x20,0x70,0x5b,0x31,0x5d,0x3b,0xa,0xa,0x20,0x20, + 0x20,0x20,0x6e,0x65,0x77,0x58,0x20,0x3d,0x20,0x6d,0x6f,0x64,0x28,0x6e,0x65,0x77, + 0x58,0x20,0x2b,0x20,0x31,0x2e,0x66,0x2c,0x20,0x32,0x2e,0x66,0x29,0x20,0x2d,0x20, + 0x31,0x2e,0x66,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6e,0x65,0x77,0x59,0x20,0x3d, + 0x20,0x6d,0x6f,0x64,0x28,0x6e,0x65,0x77,0x59,0x20,0x2b,0x20,0x31,0x2e,0x66,0x2c, + 0x20,0x32,0x2e,0x66,0x29,0x20,0x2d,0x20,0x31,0x2e,0x66,0x3b,0xa,0xa,0x20,0x20, + 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x65,0x63,0x33,0x28,0x6e,0x65, + 0x77,0x58,0x2c,0x20,0x6e,0x65,0x77,0x59,0x2c,0x20,0x30,0x2e,0x66,0x29,0x3b,0xa, + 0x7d,0xa,0xa,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x20,0x7b, + 0xa,0x20,0x20,0x20,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x63,0x61,0x6d,0x65, + 0x72,0x61,0x53,0x70,0x61,0x63,0x65,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c, + 0x69,0x7a,0x65,0x28,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x28,0x74,0x72,0x61,0x6e, + 0x73,0x70,0x6f,0x73,0x65,0x28,0x6d,0x61,0x74,0x33,0x28,0x76,0x69,0x65,0x77,0x29, + 0x29,0x29,0x20,0x2a,0x20,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x54,0x72,0x61,0x6e, + 0x73,0x70,0x6f,0x73,0x65,0x4d,0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20,0x6e,0x6f,0x72, + 0x6d,0x61,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x61,0x6d,0x65,0x72,0x61, + 0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x20,0x3d,0x20,0x76,0x65, + 0x63,0x33,0x28,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x56,0x69,0x65,0x77,0x20,0x2a, + 0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x66,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20, + 0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20, + 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63, + 0x65,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20, + 0x70,0x6f,0x73,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x6f,0x64,0x65,0x6c, + 0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x2c,0x20,0x31,0x2e,0x66,0x29,0x29,0x3b,0x20,0x2f,0x2f,0x76,0x65,0x63,0x33,0x28, + 0x6d,0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x6f,0x62,0x6a, + 0x53,0x70,0x61,0x63,0x65,0x50,0x6f,0x73,0x2c,0x20,0x31,0x2e,0x66,0x29,0x29,0x3b, + 0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x44, + 0x69,0x72,0x20,0x3d,0x20,0x2d,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, + 0x76,0x65,0x63,0x33,0x28,0x31,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x31,0x29,0x29,0x3b, + 0xa,0xa,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x20,0x3d,0x20,0x70,0x72,0x6f,0x6a,0x20,0x2a,0x20,0x76,0x69,0x65,0x77,0x20, + 0x2a,0x20,0x6d,0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x31,0x29,0x3b,0xa,0xa,0x2f,0x2f, + 0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20, + 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x5b,0x30,0x5d,0x20,0x2d,0x20,0x28,0x28,0x77,0x69,0x64,0x74,0x68,0x42,0x6f,0x75, + 0x6e,0x64,0x73,0x5b,0x30,0x5d,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x42,0x6f, + 0x75,0x6e,0x64,0x73,0x5b,0x31,0x5d,0x29,0x20,0x2f,0x20,0x32,0x29,0x29,0x20,0x2f, + 0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b,0x31,0x5d, + 0x20,0x2d,0x20,0x77,0x69,0x64,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b,0x30, + 0x5d,0x29,0x20,0x2a,0x20,0x32,0x2c,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5b, + 0x32,0x5d,0x20,0x2d,0x20,0x28,0x28,0x6c,0x65,0x6e,0x67,0x74,0x68,0x42,0x6f,0x75, + 0x6e,0x64,0x73,0x5b,0x30,0x5d,0x20,0x2b,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x42, + 0x6f,0x75,0x6e,0x64,0x73,0x5b,0x31,0x5d,0x29,0x20,0x2f,0x20,0x32,0x29,0x29,0x20, + 0x2f,0x20,0x28,0x6c,0x65,0x6e,0x67,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64,0x73,0x5b, + 0x31,0x5d,0x20,0x2d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x42,0x6f,0x75,0x6e,0x64, + 0x73,0x5b,0x30,0x5d,0x29,0x20,0x2a,0x20,0x32,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20, + 0x31,0x2e,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x6e,0x65,0x77,0x58,0x20,0x3d,0x20,0x6d,0x6f,0x64,0x28,0x69,0x6e,0x74,0x28,0x70, + 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5b,0x30,0x5d,0x29,0x2c,0x20,0x33,0x29,0x20, + 0x2d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6e, + 0x65,0x77,0x59,0x20,0x3d,0x20,0x6d,0x6f,0x64,0x28,0x69,0x6e,0x74,0x28,0x70,0x6f, + 0x73,0x69,0x74,0x69,0x6f,0x6e,0x5b,0x32,0x5d,0x29,0x2c,0x20,0x33,0x29,0x20,0x2d, + 0x20,0x31,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x72,0x65, + 0x66,0x72,0x61,0x63,0x74,0x65,0x64,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x41, + 0x6e,0x64,0x50,0x72,0x6f,0x62,0x20,0x3d,0x20,0x72,0x65,0x66,0x72,0x61,0x63,0x74, + 0x54,0x6f,0x46,0x6c,0x6f,0x6f,0x72,0x28,0x2d,0x6c,0x69,0x67,0x68,0x74,0x44,0x69, + 0x72,0x2c,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x6e,0x6f,0x72, + 0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x2c,0x20, + 0x64,0x65,0x70,0x74,0x68,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x77,0x61,0x74,0x65,0x72,0x4d,0x75,0x72,0x6b,0x69,0x6e,0x65,0x73, + 0x73,0x20,0x3d,0x20,0x2e,0x30,0x30,0x32,0x66,0x3b,0xa,0xa,0x20,0x20,0x20,0x20, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65, + 0x63,0x34,0x28,0x6e,0x65,0x77,0x58,0x2c,0x20,0x6e,0x65,0x77,0x59,0x2c,0x20,0x30, + 0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69, + 0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x20,0x3d,0x20,0x72,0x65,0x66,0x72,0x61, + 0x63,0x74,0x65,0x64,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x41,0x6e,0x64,0x50, + 0x72,0x6f,0x62,0x5b,0x33,0x5d,0x20,0x2a,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x64, + 0x6f,0x74,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53, + 0x70,0x61,0x63,0x65,0x2c,0x20,0x6c,0x69,0x67,0x68,0x74,0x44,0x69,0x72,0x29,0x2c, + 0x20,0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x20,0x2a,0x20,0x65,0x78,0x70, + 0x28,0x2d,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69, + 0x6f,0x6e,0x20,0x2d,0x20,0x76,0x65,0x63,0x33,0x28,0x72,0x65,0x66,0x72,0x61,0x63, + 0x74,0x65,0x64,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x41,0x6e,0x64,0x50,0x72, + 0x6f,0x62,0x29,0x29,0x29,0x20,0x2a,0x20,0x77,0x61,0x74,0x65,0x72,0x4d,0x75,0x72, + 0x6b,0x69,0x6e,0x65,0x73,0x73,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6f,0x6c, + 0x64,0x50,0x6f,0x73,0x46,0x6c,0x61,0x74,0x20,0x3d,0x20,0x6d,0x6f,0x76,0x65,0x54, + 0x6f,0x54,0x6f,0x70,0x44,0x6f,0x77,0x6e,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x6d,0x6f, + 0x76,0x65,0x54,0x6f,0x54,0x6f,0x70,0x44,0x6f,0x77,0x6e,0x28,0x76,0x65,0x63,0x33, + 0x28,0x72,0x65,0x66,0x72,0x61,0x63,0x74,0x65,0x64,0x50,0x6f,0x73,0x69,0x74,0x69, + 0x6f,0x6e,0x41,0x6e,0x64,0x50,0x72,0x6f,0x62,0x29,0x29,0x3b,0xa,0x20,0x20,0x20, + 0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76, + 0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0x7d, + 0xa, + // /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/color.frag + 0x0,0x0,0x5,0x40, + 0x23, + 0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x20,0x63,0x6f,0x72,0x65, + 0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x43,0x6f, + 0x6c,0x6f,0x72,0x3b,0xa,0xa,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x6e,0x6f, + 0x72,0x6d,0x61,0x6c,0x5f,0x63,0x61,0x6d,0x65,0x72,0x61,0x53,0x70,0x61,0x63,0x65, + 0x3b,0xa,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d,0x65,0x72,0x61, + 0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x3b,0xa,0x69,0x6e,0x20, + 0x76,0x65,0x63,0x33,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c, + 0x64,0x53,0x70,0x61,0x63,0x65,0x3b,0xa,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20, + 0x70,0x6f,0x73,0x3b,0xa,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x6f,0x6c,0x64, + 0x50,0x6f,0x73,0x46,0x6c,0x61,0x74,0x3b,0xa,0x69,0x6e,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0xa,0xa,0x2f,0x2f, + 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x75, + 0x6c,0x74,0x69,0x70,0x6c,0x69,0x65,0x72,0x20,0x3d,0x20,0x31,0x2e,0x66,0x3b,0xa, + 0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x20,0x3d,0x20,0x31,0x30,0x2e,0x66,0x3b, + 0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x69,0x6e,0x74,0x45,0x78,0x70,0x20,0x3d,0x20,0x30,0x2e,0x35,0x66,0x3b,0xa, + 0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x73,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x31,0x2e,0x66,0x3b,0xa,0xa,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x75,0x6c,0x74, + 0x69,0x70,0x6c,0x69,0x65,0x72,0x20,0x3d,0x20,0x2e,0x39,0x66,0x3b,0xa,0x75,0x6e, + 0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x6e,0x74, + 0x72,0x61,0x73,0x74,0x20,0x3d,0x20,0x32,0x30,0x2e,0x66,0x3b,0xa,0x75,0x6e,0x69, + 0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x74,0x45,0x78, + 0x70,0x20,0x3d,0x20,0x30,0x2e,0x66,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x31, + 0x2e,0x66,0x3b,0xa,0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,0x65,0x72,0x20, + 0x3d,0x20,0x2e,0x35,0x66,0x3b,0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x20, + 0x3d,0x20,0x31,0x2e,0x35,0x66,0x3b,0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72, + 0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x74,0x45,0x78,0x70,0x20,0x3d, + 0x20,0x30,0x2e,0x66,0x3b,0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x73,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x31,0x2e, + 0x66,0x3b,0xa,0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65, + 0x63,0x34,0x20,0x62,0x61,0x73,0x65,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x76,0x65, + 0x63,0x34,0x28,0x29,0x3b,0xa,0xa,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e, + 0x28,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x30,0x2e,0x35,0x66,0x20,0x2a,0x20,0x28,0x76,0x65,0x63, + 0x34,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70, + 0x61,0x63,0x65,0x5b,0x30,0x5d,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x6e,0x6f,0x72, + 0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x5b,0x32, + 0x5d,0x2c,0x20,0x31,0x2e,0x66,0x29,0x20,0x2b,0x20,0x31,0x29,0x3b,0xa,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6f,0x6c,0x64,0x41,0x72,0x65,0x61,0x20, + 0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x64,0x46,0x64,0x78,0x28,0x6f,0x6c, + 0x64,0x50,0x6f,0x73,0x46,0x6c,0x61,0x74,0x29,0x29,0x20,0x2a,0x20,0x6c,0x65,0x6e, + 0x67,0x74,0x68,0x28,0x64,0x46,0x64,0x79,0x28,0x6f,0x6c,0x64,0x50,0x6f,0x73,0x46, + 0x6c,0x61,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x6e,0x65,0x77,0x41,0x72,0x65,0x61,0x20,0x3d,0x20,0x6c,0x65,0x6e,0x67,0x74, + 0x68,0x28,0x64,0x46,0x64,0x78,0x28,0x70,0x6f,0x73,0x29,0x29,0x20,0x2a,0x20,0x6c, + 0x65,0x6e,0x67,0x74,0x68,0x28,0x64,0x46,0x64,0x79,0x28,0x70,0x6f,0x73,0x29,0x29, + 0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x61,0x72,0x65,0x61, + 0x52,0x61,0x74,0x69,0x6f,0x20,0x3d,0x20,0x6f,0x6c,0x64,0x41,0x72,0x65,0x61,0x20, + 0x2f,0x20,0x6e,0x65,0x77,0x41,0x72,0x65,0x61,0x20,0x2a,0x20,0x6d,0x75,0x6c,0x74, + 0x69,0x70,0x6c,0x69,0x65,0x72,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x69,0x66, + 0x28,0x6f,0x6c,0x64,0x41,0x72,0x65,0x61,0x20,0x2f,0x20,0x6e,0x65,0x77,0x41,0x72, + 0x65,0x61,0x20,0x3e,0x20,0x33,0x29,0x20,0x7b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x61,0x72,0x65,0x61,0x52,0x61,0x74,0x69,0x6f,0x20,0x3d,0x20, + 0x30,0x2e,0x66,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x7d,0xa,0x2f,0x2f,0x20, + 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63, + 0x6c,0x61,0x6d,0x70,0x28,0x76,0x65,0x63,0x34,0x28,0x69,0x6e,0x74,0x65,0x6e,0x73, + 0x69,0x74,0x79,0x2c,0x20,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20, + 0x28,0x31,0x2e,0x66,0x20,0x2d,0x20,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, + 0x29,0x20,0x2a,0x20,0x2e,0x35,0x66,0x2c,0x20,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69, + 0x74,0x79,0x29,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa, + 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, + 0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x77,0x28,0x61,0x72,0x65,0x61,0x52,0x61,0x74, + 0x69,0x6f,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x72,0x61,0x73,0x74,0x29,0x29,0x20,0x2a, + 0x20,0x70,0x6f,0x77,0x28,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20, + 0x69,0x6e,0x74,0x45,0x78,0x70,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x66,0x69,0x6e,0x61,0x6c,0x49,0x6e,0x74,0x20,0x3d,0x20,0x70,0x6f, + 0x77,0x28,0x61,0x72,0x65,0x61,0x52,0x61,0x74,0x69,0x6f,0x2c,0x20,0x63,0x6f,0x6e, + 0x74,0x72,0x61,0x73,0x74,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x69,0x6e,0x74, + 0x65,0x6e,0x73,0x69,0x74,0x79,0x2c,0x20,0x69,0x6e,0x74,0x45,0x78,0x70,0x29,0x3b, + 0xa,0x20,0x20,0x20,0x20,0x66,0x69,0x6e,0x61,0x6c,0x49,0x6e,0x74,0x20,0x3d,0x20, + 0x63,0x6c,0x61,0x6d,0x70,0x28,0x66,0x69,0x6e,0x61,0x6c,0x49,0x6e,0x74,0x2c,0x20, + 0x30,0x2c,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43, + 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x31,0x2c,0x20,0x31, + 0x2c,0x20,0x31,0x2c,0x20,0x66,0x69,0x6e,0x61,0x6c,0x49,0x6e,0x74,0x20,0x2a,0x20, + 0x73,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76, + 0x65,0x63,0x33,0x28,0x31,0x29,0x2c,0x20,0x70,0x6f,0x77,0x28,0x6f,0x6c,0x64,0x41, + 0x72,0x65,0x61,0x20,0x2f,0x20,0x6e,0x65,0x77,0x41,0x72,0x65,0x61,0x20,0x2a,0x20, + 0x2e,0x32,0x66,0x2c,0x20,0x31,0x2e,0x35,0x66,0x29,0x29,0x3b,0xa,0x7d,0xa, + // /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/texture.vert 0x0,0x0,0x1,0x88, 0x23, 0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x20,0x63,0x6f,0x72,0x65, @@ -164,7 +462,7 @@ static const unsigned char qt_resource_data[] = { 0x6f,0x6c,0x6f,0x72,0x2e,0x77,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20, 0x7d,0xa,0x7d,0xa, // /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/shader.vert - 0x0,0x0,0xd,0x53, + 0x0,0x0,0xd,0x9a, 0x23, 0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x33,0x30,0x20,0x63,0x6f,0x72,0x65, 0xa,0xa,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, @@ -176,212 +474,216 @@ static const unsigned char qt_resource_data[] = { 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0x20,0x20,0x20,0x2f,0x2f,0x20,0x4e,0x6f,0x72, 0x6d,0x61,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x76,0x65,0x72,0x74,0x65, 0x78,0xa,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f, - 0x6e,0x20,0x3d,0x20,0x33,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x74, + 0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x33,0x20,0x74, 0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x73,0x3b,0x20,0x20,0x20,0x2f,0x2f,0x20,0x4e, 0x6f,0x72,0x6d,0x61,0x6c,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x76,0x65,0x72, - 0x74,0x65,0x78,0xa,0xa,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x61, - 0x74,0x34,0x20,0x70,0x72,0x6f,0x6a,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, - 0x20,0x6d,0x61,0x74,0x34,0x20,0x76,0x69,0x65,0x77,0x3b,0xa,0x75,0x6e,0x69,0x66, - 0x6f,0x72,0x6d,0x20,0x6d,0x61,0x74,0x34,0x20,0x6d,0x6f,0x64,0x65,0x6c,0x3b,0xa, - 0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x61,0x74,0x34,0x20,0x69,0x6e,0x76, - 0x65,0x72,0x73,0x65,0x56,0x69,0x65,0x77,0x3b,0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66, - 0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3b, - 0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f, - 0x3a,0x20,0x50,0x61,0x73,0x73,0x20,0x69,0x6e,0x20,0x77,0x69,0x64,0x74,0x68,0x20, - 0x61,0x6e,0x64,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x61,0x73,0x20,0x75,0x6e, - 0x69,0x66,0x6f,0x72,0x6d,0xa,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d, - 0x61,0x74,0x33,0x20,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x54,0x72,0x61,0x6e,0x73, - 0x70,0x6f,0x73,0x65,0x4d,0x6f,0x64,0x65,0x6c,0x3b,0xa,0xa,0x6f,0x75,0x74,0x20, - 0x76,0x65,0x63,0x33,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x63,0x61,0x6d,0x65, - 0x72,0x61,0x53,0x70,0x61,0x63,0x65,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63, - 0x33,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70, - 0x61,0x63,0x65,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61, - 0x6d,0x65,0x72,0x61,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x3b, - 0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f,0x73,0x3b,0xa,0x6f, - 0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x65,0x66,0x6c,0x50,0x6f,0x73,0x3b, - 0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x65,0x66,0x72,0x50,0x6f, - 0x73,0x3b,0xa,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x65,0x66, - 0x72,0x50,0x72,0x6f,0x62,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20, - 0x75,0x76,0x3b,0xa,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x61, - 0x74,0x49,0x6f,0x72,0x3b,0xa,0xa,0x76,0x65,0x63,0x34,0x20,0x67,0x65,0x74,0x52, - 0x65,0x66,0x72,0x50,0x6f,0x73,0x28,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x2d,0x31,0x30, - 0x30,0x30,0x2e,0x66,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x50, - 0x61,0x73,0x73,0x20,0x61,0x73,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0xa,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x5f,0x6f,0x20,0x3d,0x20,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x6f,0x73,0x20,0x2d,0x20,0x63,0x61, - 0x6d,0x65,0x72,0x61,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x29, - 0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73,0x5f, - 0x74,0x68,0x65,0x74,0x61,0x5f,0x69,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x2d,0x77, - 0x5f,0x6f,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64, - 0x53,0x70,0x61,0x63,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x6e,0x5f,0x69,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x6e,0x5f,0x74,0x20,0x3d,0x20,0x31,0x2e,0x33,0x33,0x66, - 0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x49,0x6f,0x72,0x20,0x3d, - 0x20,0x6e,0x5f,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x64,0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x61,0x6e,0x74,0x20,0x3d,0x20,0x31,0x2e, - 0x66,0x20,0x2d,0x20,0x28,0x70,0x6f,0x77,0x28,0x28,0x6e,0x5f,0x69,0x20,0x2f,0x20, - 0x6e,0x5f,0x74,0x29,0x2c,0x20,0x32,0x2e,0x66,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e, - 0x66,0x20,0x2d,0x20,0x70,0x6f,0x77,0x28,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74, - 0x61,0x5f,0x69,0x2c,0x20,0x32,0x2e,0x66,0x29,0x29,0x29,0x3b,0xa,0xa,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x30,0x20,0x3d,0x20,0x70,0x6f,0x77, - 0x28,0x28,0x6e,0x5f,0x69,0x20,0x2d,0x20,0x6e,0x5f,0x74,0x29,0x20,0x2f,0x20,0x28, - 0x6e,0x5f,0x69,0x20,0x2b,0x20,0x6e,0x5f,0x74,0x29,0x2c,0x20,0x32,0x2e,0x66,0x29, - 0x3b,0x20,0x2f,0x2f,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x20,0x72,0x65, - 0x71,0x75,0x69,0x72,0x65,0x64,0x20,0x74,0x6f,0x20,0x63,0x61,0x6c,0x63,0x75,0x6c, - 0x61,0x74,0x65,0x20,0x70,0x72,0x6f,0x62,0x61,0x62,0x69,0x6c,0x69,0x74,0x79,0x20, - 0x6f,0x66,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0xa,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x72,0x6f,0x62,0x5f,0x74,0x6f,0x5f, - 0x72,0x65,0x66,0x6c,0x20,0x3d,0x20,0x72,0x30,0x20,0x2b,0x20,0x28,0x28,0x31,0x20, - 0x2d,0x20,0x72,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x28,0x31,0x20,0x2d, - 0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61,0x5f,0x69,0x29,0x2c,0x20,0x35, - 0x2e,0x66,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x64, - 0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x61,0x6e,0x74,0x20,0x3e,0x3d,0x20,0x30,0x29, - 0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61,0x5f,0x74,0x20,0x3d,0x20,0x73, - 0x71,0x72,0x74,0x28,0x64,0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x61,0x6e,0x74,0x29, - 0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x77, - 0x5f,0x74,0x20,0x3d,0x20,0x28,0x6e,0x5f,0x69,0x20,0x2f,0x20,0x6e,0x5f,0x74,0x29, - 0x20,0x2a,0x20,0x77,0x5f,0x6f,0x20,0x2b,0x20,0x28,0x28,0x6e,0x5f,0x69,0x20,0x2f, - 0x20,0x6e,0x5f,0x74,0x29,0x20,0x2a,0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74, - 0x61,0x5f,0x69,0x20,0x2d,0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61,0x5f, - 0x74,0x29,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c, - 0x64,0x53,0x70,0x61,0x63,0x65,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x52,0x61,0x79,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64,0x52, - 0x61,0x79,0x28,0x69,0x2e,0x68,0x69,0x74,0x2c,0x20,0x77,0x5f,0x74,0x29,0x3b,0xa, - 0x2f,0x2f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x61,0x74,0x74,0x65,0x6e,0x75,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x28,0x21, - 0x65,0x6e,0x74,0x65,0x72,0x69,0x6e,0x67,0x20,0x26,0x26,0x20,0x61,0x74,0x74,0x65, - 0x6e,0x75,0x61,0x74,0x65,0x52,0x65,0x66,0x72,0x61,0x63,0x74,0x29,0x20,0x3f,0x20, - 0x73,0x74,0x64,0x3a,0x3a,0x70,0x6f,0x77,0x28,0x4d,0x5f,0x45,0x2c,0x20,0x28,0x2d, - 0x28,0x72,0x61,0x79,0x2e,0x6f,0x20,0x2d,0x20,0x69,0x2e,0x68,0x69,0x74,0x29,0x2e, - 0x6e,0x6f,0x72,0x6d,0x28,0x29,0x29,0x20,0x2a,0x20,0x6d,0x61,0x74,0x2e,0x69,0x6f, - 0x72,0x29,0x20,0x3a,0x20,0x31,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x4c,0x20,0x2b,0x3d,0x20,0x74,0x72,0x61,0x63,0x65,0x52,0x61,0x79,0x28, - 0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64,0x52,0x61,0x79,0x2c,0x20,0x73,0x63, - 0x65,0x6e,0x65,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x6e,0x5f,0x74,0x2c,0x20, - 0x21,0x69,0x73,0x5f,0x69,0x6e,0x5f,0x72,0x65,0x66,0x72,0x61,0x63,0x74,0x6f,0x72, - 0x29,0x20,0x2a,0x20,0x61,0x74,0x74,0x65,0x6e,0x75,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x2f,0x20,0x74,0x68,0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x3b,0xa,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x69,0x73,0x74,0x20, - 0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2d,0x20,0x64, - 0x65,0x70,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d, - 0x20,0x64,0x69,0x73,0x74,0x20,0x2f,0x20,0x77,0x5f,0x74,0x2e,0x79,0x3b,0xa,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x67,0x72,0x6f,0x75, - 0x6e,0x64,0x43,0x6f,0x6e,0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d, - 0x20,0x2d,0x28,0x77,0x5f,0x74,0x20,0x2a,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63, - 0x61,0x6c,0x65,0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b, - 0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x76,0x65,0x63,0x34,0x28,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6e,0x74,0x61, - 0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x2c,0x20,0x31,0x2e,0x66,0x20,0x2d,0x20,0x70, - 0x72,0x6f,0x62,0x5f,0x74,0x6f,0x5f,0x72,0x65,0x66,0x6c,0x29,0x3b,0xa,0x20,0x20, - 0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x2f,0x2f,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x45,0x69,0x67,0x65,0x6e,0x3a,0x3a,0x56,0x65,0x63,0x74, - 0x6f,0x72,0x33,0x66,0x20,0x77,0x5f,0x69,0x20,0x3d,0x20,0x77,0x5f,0x6f,0x20,0x2d, - 0x20,0x32,0x20,0x2a,0x20,0x77,0x5f,0x6f,0x2e,0x64,0x6f,0x74,0x28,0x69,0x6e,0x74, - 0x65,0x72,0x73,0x65,0x63,0x74,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x29,0x20,0x2a,0x20, - 0x69,0x6e,0x63,0x69,0x64,0x65,0x6e,0x63,0x65,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x3b, - 0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x61,0x79,0x20,0x72, - 0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64,0x52,0x61,0x79,0x28,0x69,0x2e,0x68,0x69, - 0x74,0x2c,0x20,0x77,0x5f,0x69,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20, + 0x74,0x65,0x78,0xa,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x2d,0x33,0x30,0x30,0x30, + 0x2e,0x66,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x73,0x6b,0x79,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x35,0x30, + 0x30,0x2e,0x66,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x61,0x74, + 0x34,0x20,0x70,0x72,0x6f,0x6a,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, + 0x6d,0x61,0x74,0x34,0x20,0x76,0x69,0x65,0x77,0x3b,0xa,0x75,0x6e,0x69,0x66,0x6f, + 0x72,0x6d,0x20,0x6d,0x61,0x74,0x34,0x20,0x6d,0x6f,0x64,0x65,0x6c,0x3b,0xa,0x75, + 0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x61,0x74,0x34,0x20,0x69,0x6e,0x76,0x65, + 0x72,0x73,0x65,0x56,0x69,0x65,0x77,0x3b,0xa,0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f, + 0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa, + 0x2f,0x2f,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a, + 0x20,0x50,0x61,0x73,0x73,0x20,0x69,0x6e,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x61, + 0x6e,0x64,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x61,0x73,0x20,0x75,0x6e,0x69, + 0x66,0x6f,0x72,0x6d,0xa,0xa,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x61, + 0x74,0x33,0x20,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x70, + 0x6f,0x73,0x65,0x4d,0x6f,0x64,0x65,0x6c,0x3b,0xa,0xa,0x6f,0x75,0x74,0x20,0x76, + 0x65,0x63,0x33,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x63,0x61,0x6d,0x65,0x72, + 0x61,0x53,0x70,0x61,0x63,0x65,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33, + 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61, + 0x63,0x65,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x63,0x61,0x6d, + 0x65,0x72,0x61,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x3b,0xa, + 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x6f,0x73,0x3b,0xa,0x6f,0x75, + 0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x65,0x66,0x6c,0x50,0x6f,0x73,0x3b,0xa, + 0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x65,0x66,0x72,0x50,0x6f,0x73, + 0x3b,0xa,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x65,0x66,0x72, + 0x50,0x72,0x6f,0x62,0x3b,0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75, + 0x76,0x3b,0xa,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x61,0x74, + 0x49,0x6f,0x72,0x3b,0xa,0xa,0x76,0x65,0x63,0x34,0x20,0x67,0x65,0x74,0x52,0x65, + 0x66,0x72,0x50,0x6f,0x73,0x28,0x29,0x20,0x7b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x2d,0x31, + 0x35,0x30,0x30,0x2e,0x66,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20, + 0x50,0x61,0x73,0x73,0x20,0x61,0x73,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0xa, + 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x5f,0x6f,0x20,0x3d,0x20,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x6f,0x73,0x20,0x2d,0x20,0x63, + 0x61,0x6d,0x65,0x72,0x61,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65, + 0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x63,0x6f,0x73, + 0x5f,0x74,0x68,0x65,0x74,0x61,0x5f,0x69,0x20,0x3d,0x20,0x64,0x6f,0x74,0x28,0x2d, + 0x77,0x5f,0x6f,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c, + 0x64,0x53,0x70,0x61,0x63,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x6e,0x5f,0x69,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x6e,0x5f,0x74,0x20,0x3d,0x20,0x31,0x2e,0x33,0x33, + 0x66,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x49,0x6f,0x72,0x20, + 0x3d,0x20,0x6e,0x5f,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x64,0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x61,0x6e,0x74,0x20,0x3d,0x20,0x31, + 0x2e,0x66,0x20,0x2d,0x20,0x28,0x70,0x6f,0x77,0x28,0x28,0x6e,0x5f,0x69,0x20,0x2f, + 0x20,0x6e,0x5f,0x74,0x29,0x2c,0x20,0x32,0x2e,0x66,0x29,0x20,0x2a,0x20,0x28,0x31, + 0x2e,0x66,0x20,0x2d,0x20,0x70,0x6f,0x77,0x28,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65, + 0x74,0x61,0x5f,0x69,0x2c,0x20,0x32,0x2e,0x66,0x29,0x29,0x29,0x3b,0xa,0xa,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x30,0x20,0x3d,0x20,0x70,0x6f, + 0x77,0x28,0x28,0x6e,0x5f,0x69,0x20,0x2d,0x20,0x6e,0x5f,0x74,0x29,0x20,0x2f,0x20, + 0x28,0x6e,0x5f,0x69,0x20,0x2b,0x20,0x6e,0x5f,0x74,0x29,0x2c,0x20,0x32,0x2e,0x66, + 0x29,0x3b,0x20,0x2f,0x2f,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x20,0x72, + 0x65,0x71,0x75,0x69,0x72,0x65,0x64,0x20,0x74,0x6f,0x20,0x63,0x61,0x6c,0x63,0x75, + 0x6c,0x61,0x74,0x65,0x20,0x70,0x72,0x6f,0x62,0x61,0x62,0x69,0x6c,0x69,0x74,0x79, + 0x20,0x6f,0x66,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0xa,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x72,0x6f,0x62,0x5f,0x74,0x6f, + 0x5f,0x72,0x65,0x66,0x6c,0x20,0x3d,0x20,0x72,0x30,0x20,0x2b,0x20,0x28,0x28,0x31, + 0x20,0x2d,0x20,0x72,0x30,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x28,0x31,0x20, + 0x2d,0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61,0x5f,0x69,0x29,0x2c,0x20, + 0x35,0x2e,0x66,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x64,0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x61,0x6e,0x74,0x20,0x3e,0x3d,0x20,0x30, + 0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61,0x5f,0x74,0x20,0x3d,0x20, + 0x73,0x71,0x72,0x74,0x28,0x64,0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x61,0x6e,0x74, + 0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, + 0x77,0x5f,0x74,0x20,0x3d,0x20,0x28,0x6e,0x5f,0x69,0x20,0x2f,0x20,0x6e,0x5f,0x74, + 0x29,0x20,0x2a,0x20,0x77,0x5f,0x6f,0x20,0x2b,0x20,0x28,0x28,0x6e,0x5f,0x69,0x20, + 0x2f,0x20,0x6e,0x5f,0x74,0x29,0x20,0x2a,0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65, + 0x74,0x61,0x5f,0x69,0x20,0x2d,0x20,0x63,0x6f,0x73,0x5f,0x74,0x68,0x65,0x74,0x61, + 0x5f,0x74,0x29,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72, + 0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x52,0x61,0x79,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64, + 0x52,0x61,0x79,0x28,0x69,0x2e,0x68,0x69,0x74,0x2c,0x20,0x77,0x5f,0x74,0x29,0x3b, + 0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x61,0x74,0x74,0x65,0x6e,0x75,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x28, + 0x21,0x65,0x6e,0x74,0x65,0x72,0x69,0x6e,0x67,0x20,0x26,0x26,0x20,0x61,0x74,0x74, + 0x65,0x6e,0x75,0x61,0x74,0x65,0x52,0x65,0x66,0x72,0x61,0x63,0x74,0x29,0x20,0x3f, + 0x20,0x73,0x74,0x64,0x3a,0x3a,0x70,0x6f,0x77,0x28,0x4d,0x5f,0x45,0x2c,0x20,0x28, + 0x2d,0x28,0x72,0x61,0x79,0x2e,0x6f,0x20,0x2d,0x20,0x69,0x2e,0x68,0x69,0x74,0x29, + 0x2e,0x6e,0x6f,0x72,0x6d,0x28,0x29,0x29,0x20,0x2a,0x20,0x6d,0x61,0x74,0x2e,0x69, + 0x6f,0x72,0x29,0x20,0x3a,0x20,0x31,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x4c,0x20,0x2b,0x3d,0x20,0x74,0x72,0x61,0x63,0x65,0x52,0x61,0x79, 0x28,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64,0x52,0x61,0x79,0x2c,0x20,0x73, - 0x63,0x65,0x6e,0x65,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x63,0x75,0x72,0x72, - 0x65,0x6e,0x74,0x5f,0x69,0x6f,0x72,0x2c,0x20,0x66,0x61,0x6c,0x73,0x65,0x29,0x20, - 0x2f,0x20,0x74,0x68,0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x3b,0xa,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x65,0x63,0x34, - 0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20, - 0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x76,0x65,0x63,0x33,0x20,0x67,0x65,0x74,0x52, - 0x65,0x66,0x6c,0x50,0x6f,0x73,0x28,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x35,0x30,0x30, - 0x2e,0x66,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x50,0x61,0x73, - 0x73,0x20,0x61,0x73,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0xa,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x5f,0x6f,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x6f,0x73,0x20,0x2d,0x20,0x63,0x61,0x6d,0x65, - 0x72,0x61,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x29,0x3b,0xa, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74, - 0x65,0x64,0x52,0x61,0x79,0x20,0x3d,0x20,0x77,0x5f,0x6f,0x20,0x2d,0x20,0x32,0x20, - 0x2a,0x20,0x64,0x6f,0x74,0x28,0x77,0x5f,0x6f,0x2c,0x20,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x29,0x20,0x2a,0x20, + 0x63,0x65,0x6e,0x65,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x6e,0x5f,0x74,0x2c, + 0x20,0x21,0x69,0x73,0x5f,0x69,0x6e,0x5f,0x72,0x65,0x66,0x72,0x61,0x63,0x74,0x6f, + 0x72,0x29,0x20,0x2a,0x20,0x61,0x74,0x74,0x65,0x6e,0x75,0x61,0x74,0x69,0x6f,0x6e, + 0x20,0x2f,0x20,0x74,0x68,0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x3b,0xa,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x69,0x73,0x74, + 0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2d,0x20, + 0x64,0x65,0x70,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x20, + 0x3d,0x20,0x64,0x69,0x73,0x74,0x20,0x2f,0x20,0x77,0x5f,0x74,0x2e,0x79,0x3b,0xa, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x67,0x72,0x6f, + 0x75,0x6e,0x64,0x43,0x6f,0x6e,0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x20, + 0x3d,0x20,0x2d,0x28,0x77,0x5f,0x74,0x20,0x2a,0x20,0x64,0x65,0x70,0x74,0x68,0x53, + 0x63,0x61,0x6c,0x65,0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x76,0x65,0x63,0x34,0x28,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6e,0x74, + 0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x2c,0x20,0x31,0x2e,0x66,0x20,0x2d,0x20, + 0x70,0x72,0x6f,0x62,0x5f,0x74,0x6f,0x5f,0x72,0x65,0x66,0x6c,0x29,0x3b,0xa,0x20, + 0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x2f,0x2f,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x45,0x69,0x67,0x65,0x6e,0x3a,0x3a,0x56,0x65,0x63, + 0x74,0x6f,0x72,0x33,0x66,0x20,0x77,0x5f,0x69,0x20,0x3d,0x20,0x77,0x5f,0x6f,0x20, + 0x2d,0x20,0x32,0x20,0x2a,0x20,0x77,0x5f,0x6f,0x2e,0x64,0x6f,0x74,0x28,0x69,0x6e, + 0x74,0x65,0x72,0x73,0x65,0x63,0x74,0x4e,0x6f,0x72,0x6d,0x61,0x6c,0x29,0x20,0x2a, + 0x20,0x69,0x6e,0x63,0x69,0x64,0x65,0x6e,0x63,0x65,0x4e,0x6f,0x72,0x6d,0x61,0x6c, + 0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x61,0x79,0x20, + 0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64,0x52,0x61,0x79,0x28,0x69,0x2e,0x68, + 0x69,0x74,0x2c,0x20,0x77,0x5f,0x69,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x4c,0x20,0x2b,0x3d,0x20,0x74,0x72,0x61,0x63,0x65,0x52,0x61, + 0x79,0x28,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64,0x52,0x61,0x79,0x2c,0x20, + 0x73,0x63,0x65,0x6e,0x65,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x20,0x63,0x75,0x72, + 0x72,0x65,0x6e,0x74,0x5f,0x69,0x6f,0x72,0x2c,0x20,0x66,0x61,0x6c,0x73,0x65,0x29, + 0x20,0x2f,0x20,0x74,0x68,0x72,0x65,0x73,0x68,0x6f,0x6c,0x64,0x3b,0xa,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x65,0x63, + 0x34,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20, + 0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x76,0x65,0x63,0x33,0x20,0x67,0x65,0x74, + 0x52,0x65,0x66,0x6c,0x50,0x6f,0x73,0x28,0x29,0x20,0x7b,0xa,0x2f,0x2f,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20, + 0x35,0x30,0x30,0x2e,0x66,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20, + 0x50,0x61,0x73,0x73,0x20,0x61,0x73,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0xa, + 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x5f,0x6f,0x20,0x3d,0x20,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x6f,0x73,0x20,0x2d,0x20,0x63, + 0x61,0x6d,0x65,0x72,0x61,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65, + 0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x72,0x65,0x66,0x6c, + 0x65,0x63,0x74,0x65,0x64,0x52,0x61,0x79,0x20,0x3d,0x20,0x77,0x5f,0x6f,0x20,0x2d, + 0x20,0x32,0x20,0x2a,0x20,0x64,0x6f,0x74,0x28,0x77,0x5f,0x6f,0x2c,0x20,0x6e,0x6f, + 0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x29, + 0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53, + 0x70,0x61,0x63,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x64,0x69,0x73,0x74,0x20,0x3d,0x20,0x73,0x6b,0x79,0x48,0x65,0x69,0x67,0x68, + 0x74,0x20,0x2d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x3b,0xa, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x53, + 0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x64,0x69,0x73,0x74,0x20,0x2f,0x20,0x72,0x65, + 0x66,0x6c,0x65,0x63,0x74,0x65,0x64,0x52,0x61,0x79,0x2e,0x79,0x3b,0xa,0x20,0x20, + 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x73,0x6b,0x79,0x43,0x6f,0x6e,0x74,0x61,0x63, + 0x74,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d,0x20,0x28,0x72,0x65,0x66,0x6c,0x65,0x63, + 0x74,0x65,0x64,0x52,0x61,0x79,0x20,0x2a,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63, + 0x61,0x6c,0x65,0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b, + 0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x6b,0x79,0x43, + 0x6f,0x6e,0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x3b,0xa,0x7d,0xa,0xa, + 0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x20,0x7b,0xa,0x2f,0x2f, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20, + 0x3d,0x20,0x2d,0x34,0x2e,0x66,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x64,0x69,0x73,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74, + 0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2d,0x20,0x64,0x65,0x70,0x74,0x68,0x3b,0xa,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3d, + 0x20,0x38,0x31,0x2e,0x66,0x20,0x2a,0x20,0x32,0x2e,0x66,0x3b,0xa,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x20,0x3d,0x20, + 0x38,0x31,0x2e,0x66,0x20,0x2a,0x20,0x32,0x2e,0x66,0x3b,0xa,0x20,0x20,0x20,0x20, + 0x6d,0x61,0x74,0x49,0x6f,0x72,0x20,0x3d,0x20,0x31,0x2e,0x33,0x33,0x66,0x3b,0xa, + 0xa,0x20,0x20,0x20,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x63,0x61,0x6d,0x65, + 0x72,0x61,0x53,0x70,0x61,0x63,0x65,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c, + 0x69,0x7a,0x65,0x28,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x28,0x74,0x72,0x61,0x6e, + 0x73,0x70,0x6f,0x73,0x65,0x28,0x6d,0x61,0x74,0x33,0x28,0x76,0x69,0x65,0x77,0x29, + 0x29,0x29,0x20,0x2a,0x20,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x54,0x72,0x61,0x6e, + 0x73,0x70,0x6f,0x73,0x65,0x4d,0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20,0x6e,0x6f,0x72, + 0x6d,0x61,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x61,0x6d,0x65,0x72,0x61, + 0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x20,0x3d,0x20,0x76,0x65, + 0x63,0x33,0x28,0x69,0x6e,0x76,0x65,0x72,0x73,0x65,0x56,0x69,0x65,0x77,0x20,0x2a, + 0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x66,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20, + 0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20, 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63, - 0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x69, - 0x73,0x74,0x20,0x3d,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x2d,0x20,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20, - 0x64,0x69,0x73,0x74,0x20,0x2f,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64, - 0x52,0x61,0x79,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x73,0x6b,0x79,0x43,0x6f,0x6e,0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x20, - 0x3d,0x20,0x28,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x65,0x64,0x52,0x61,0x79,0x20, - 0x2a,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x29,0x20,0x2b,0x20, - 0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x73,0x6b,0x79,0x43,0x6f,0x6e,0x74,0x61,0x63,0x74,0x50, - 0x6f,0x69,0x6e,0x74,0x3b,0xa,0x7d,0xa,0xa,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61, - 0x69,0x6e,0x28,0x29,0x20,0x7b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x2d,0x34,0x2e,0x66,0x3b, - 0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x69,0x73, - 0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x2d, - 0x20,0x64,0x65,0x70,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x38,0x31,0x2e,0x66,0x20,0x2a, - 0x20,0x32,0x2e,0x66,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x6c,0x65,0x6e,0x67,0x74,0x68,0x20,0x3d,0x20,0x38,0x31,0x2e,0x66,0x20,0x2a,0x20, - 0x32,0x2e,0x66,0x3b,0xa,0x20,0x20,0x20,0x20,0x6d,0x61,0x74,0x49,0x6f,0x72,0x20, - 0x3d,0x20,0x31,0x2e,0x33,0x33,0x66,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x5f,0x63,0x61,0x6d,0x65,0x72,0x61,0x53,0x70,0x61,0x63,0x65, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x76, - 0x65,0x72,0x73,0x65,0x28,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x73,0x65,0x28,0x6d, - 0x61,0x74,0x33,0x28,0x76,0x69,0x65,0x77,0x29,0x29,0x29,0x20,0x2a,0x20,0x69,0x6e, - 0x76,0x65,0x72,0x73,0x65,0x54,0x72,0x61,0x6e,0x73,0x70,0x6f,0x73,0x65,0x4d,0x6f, - 0x64,0x65,0x6c,0x20,0x2a,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x29,0x3b,0xa,0x20, - 0x20,0x20,0x20,0x63,0x61,0x6d,0x65,0x72,0x61,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53, - 0x70,0x61,0x63,0x65,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x69,0x6e,0x76,0x65, - 0x72,0x73,0x65,0x56,0x69,0x65,0x77,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x30, - 0x2e,0x66,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e, - 0x66,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f, - 0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x20,0x3d,0x20,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x33,0x28,0x6d,0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20,0x76,0x65,0x63,0x34, - 0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x31,0x2e,0x66,0x29,0x29, - 0x3b,0x20,0x2f,0x2f,0x76,0x65,0x63,0x33,0x28,0x6d,0x6f,0x64,0x65,0x6c,0x20,0x2a, - 0x20,0x76,0x65,0x63,0x34,0x28,0x6f,0x62,0x6a,0x53,0x70,0x61,0x63,0x65,0x50,0x6f, - 0x73,0x2c,0x20,0x31,0x2e,0x66,0x29,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20, - 0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0xa, - 0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70, - 0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x64,0x69,0x73,0x74,0x20,0x2f, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x79,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6e,0x74, - 0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d,0x20,0x2d,0x28,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x20,0x2a,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63,0x61,0x6c,0x65, - 0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x20,0x2f,0x2f, - 0x20,0x63,0x61,0x72,0x72,0x69,0x65,0x73,0x20,0x64,0x6f,0x77,0x6e,0x20,0x74,0x6f, - 0x20,0x67,0x72,0x6f,0x75,0x6e,0x64,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x67,0x72, - 0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6e,0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74, - 0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20, - 0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x31, - 0x29,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x32,0x28,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20, - 0x2b,0x20,0x38,0x31,0x2e,0x66,0x29,0x20,0x2f,0x20,0x28,0x31,0x36,0x32,0x2e,0x66, - 0x29,0x2c,0x20,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6e,0x74,0x61,0x63,0x74, - 0x50,0x6f,0x69,0x6e,0x74,0x2e,0x7a,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20, - 0x75,0x76,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x72,0x65,0x66,0x72, - 0x50,0x6f,0x73,0x5f,0x61,0x6e,0x64,0x5f,0x70,0x72,0x6f,0x62,0x20,0x3d,0x20,0x67, - 0x65,0x74,0x52,0x65,0x66,0x72,0x50,0x6f,0x73,0x28,0x29,0x3b,0xa,0x20,0x20,0x20, - 0x20,0x72,0x65,0x66,0x72,0x50,0x6f,0x73,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28, - 0x72,0x65,0x66,0x72,0x50,0x6f,0x73,0x5f,0x61,0x6e,0x64,0x5f,0x70,0x72,0x6f,0x62, - 0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20, - 0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x72,0x65,0x66,0x72,0x50,0x6f,0x73,0x5f, - 0x61,0x6e,0x64,0x5f,0x70,0x72,0x6f,0x62,0x2e,0x77,0x2c,0x20,0x30,0x2e,0x66,0x2c, - 0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x6c, - 0x50,0x6f,0x73,0x20,0x3d,0x20,0x67,0x65,0x74,0x52,0x65,0x66,0x6c,0x50,0x6f,0x73, - 0x28,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x70,0x72,0x6f,0x6a,0x20,0x2a,0x20,0x76,0x69, - 0x65,0x77,0x20,0x2a,0x20,0x6d,0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20,0x76,0x65,0x63, - 0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x31,0x29,0x3b,0xa, - 0x7d,0xa, + 0x65,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20, + 0x70,0x6f,0x73,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x6f,0x64,0x65,0x6c, + 0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x2c,0x20,0x31,0x2e,0x66,0x29,0x29,0x3b,0x20,0x2f,0x2f,0x76,0x65,0x63,0x33,0x28, + 0x6d,0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x6f,0x62,0x6a, + 0x53,0x70,0x61,0x63,0x65,0x50,0x6f,0x73,0x2c,0x20,0x31,0x2e,0x66,0x29,0x29,0x3b, + 0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73, + 0x69,0x74,0x69,0x6f,0x6e,0x3b,0xa,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d, + 0x20,0x64,0x69,0x73,0x74,0x20,0x2f,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x79, + 0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x67,0x72,0x6f, + 0x75,0x6e,0x64,0x43,0x6f,0x6e,0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x20, + 0x3d,0x20,0x2d,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x2a,0x20,0x64,0x65,0x70, + 0x74,0x68,0x53,0x63,0x61,0x6c,0x65,0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x69,0x74, + 0x69,0x6f,0x6e,0x3b,0x20,0x2f,0x2f,0x20,0x63,0x61,0x72,0x72,0x69,0x65,0x73,0x20, + 0x64,0x6f,0x77,0x6e,0x20,0x74,0x6f,0x20,0x67,0x72,0x6f,0x75,0x6e,0x64,0xa,0x2f, + 0x2f,0x20,0x20,0x20,0x20,0x67,0x72,0x6f,0x75,0x6e,0x64,0x43,0x6f,0x6e,0x74,0x61, + 0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x6d, + 0x6f,0x64,0x65,0x6c,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69, + 0x74,0x69,0x6f,0x6e,0x2c,0x20,0x31,0x29,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20, + 0x20,0x75,0x76,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x28,0x70,0x6f,0x73,0x69, + 0x74,0x69,0x6f,0x6e,0x2e,0x78,0x20,0x2b,0x20,0x38,0x31,0x2e,0x66,0x29,0x20,0x2f, + 0x20,0x28,0x31,0x36,0x32,0x2e,0x66,0x29,0x2c,0x20,0x67,0x72,0x6f,0x75,0x6e,0x64, + 0x43,0x6f,0x6e,0x74,0x61,0x63,0x74,0x50,0x6f,0x69,0x6e,0x74,0x2e,0x7a,0x29,0x3b, + 0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x76,0x65,0x63,0x32, + 0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65, + 0x63,0x34,0x20,0x72,0x65,0x66,0x72,0x50,0x6f,0x73,0x5f,0x61,0x6e,0x64,0x5f,0x70, + 0x72,0x6f,0x62,0x20,0x3d,0x20,0x67,0x65,0x74,0x52,0x65,0x66,0x72,0x50,0x6f,0x73, + 0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x72,0x50,0x6f,0x73,0x20, + 0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x72,0x65,0x66,0x72,0x50,0x6f,0x73,0x5f,0x61, + 0x6e,0x64,0x5f,0x70,0x72,0x6f,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65, + 0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x72, + 0x65,0x66,0x72,0x50,0x6f,0x73,0x5f,0x61,0x6e,0x64,0x5f,0x70,0x72,0x6f,0x62,0x2e, + 0x77,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0xa,0x20, + 0x20,0x20,0x20,0x72,0x65,0x66,0x6c,0x50,0x6f,0x73,0x20,0x3d,0x20,0x67,0x65,0x74, + 0x52,0x65,0x66,0x6c,0x50,0x6f,0x73,0x28,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20, + 0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x70,0x72, + 0x6f,0x6a,0x20,0x2a,0x20,0x76,0x69,0x65,0x77,0x20,0x2a,0x20,0x6d,0x6f,0x64,0x65, + 0x6c,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x2c,0x20,0x31,0x29,0x3b,0xa,0x7d,0xa, // /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/shader.frag - 0x0,0x0,0x12,0x6a, + 0x0,0x0,0x12,0xa6, 0x23, 0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x20,0x63,0x6f,0x72,0x65, 0xa,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x43,0x6f, @@ -529,155 +831,159 @@ static const unsigned char qt_resource_data[] = { 0x50,0x6f,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x72, 0x65,0x66,0x6c,0x55,0x56,0x20,0x3d,0x20,0x75,0x76,0x46,0x72,0x6f,0x6d,0x57,0x6f, 0x72,0x6c,0x64,0x50,0x6f,0x69,0x6e,0x74,0x28,0x72,0x65,0x66,0x6c,0x50,0x6f,0x73, - 0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x61, - 0x74,0x65,0x72,0x4d,0x75,0x72,0x6b,0x69,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30, - 0x2e,0x30,0x30,0x32,0x66,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20, - 0x4d,0x61,0x6b,0x65,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0xa,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x56,0x6f,0x6c,0x75,0x6d, - 0x65,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x72,0x65, - 0x64,0x20,0x2a,0x20,0x30,0x2e,0x31,0x66,0x2c,0x20,0x67,0x72,0x65,0x65,0x6e,0x20, - 0x2a,0x20,0x30,0x2e,0x32,0x66,0x2c,0x20,0x62,0x6c,0x75,0x65,0x20,0x2a,0x20,0x30, - 0x2e,0x32,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x6d,0x75,0x72,0x6b,0x44,0x69,0x66,0x66,0x75,0x73,0x65,0x20,0x3d,0x20,0x30,0x2e, - 0x33,0x66,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x75, - 0x72,0x6b,0x41,0x6d,0x62,0x69,0x65,0x6e,0x74,0x20,0x3d,0x20,0x30,0x2e,0x38,0x66, - 0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x65,0x65,0x72, - 0x41,0x74,0x74,0x20,0x3d,0x20,0x65,0x78,0x70,0x28,0x2d,0x6c,0x65,0x6e,0x67,0x74, - 0x68,0x28,0x28,0x70,0x6f,0x73,0x20,0x2d,0x20,0x72,0x65,0x66,0x72,0x50,0x6f,0x73, - 0x29,0x29,0x20,0x2a,0x20,0x77,0x61,0x74,0x65,0x72,0x4d,0x75,0x72,0x6b,0x69,0x6e, - 0x65,0x73,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x45,0x58,0x50, - 0x4c,0x41,0x4e,0x41,0x54,0x49,0x4f,0x4e,0x3a,0x20,0x57,0x48,0x45,0x4e,0x20,0x54, - 0x48,0x45,0x20,0x57,0x41,0x54,0x45,0x52,0x20,0x49,0x53,0x20,0x4e,0x4f,0x54,0x20, - 0x50,0x45,0x52,0x46,0x45,0x43,0x54,0x4c,0x59,0x20,0x43,0x4c,0x45,0x41,0x52,0x2c, - 0x20,0x49,0x54,0x20,0x57,0x49,0x4c,0x4c,0x20,0x48,0x41,0x56,0x45,0x20,0x53,0x54, - 0x55,0x46,0x46,0x20,0x53,0x43,0x41,0x54,0x54,0x45,0x52,0x49,0x4e,0x47,0x20,0x4c, - 0x49,0x47,0x48,0x54,0x20,0x55,0x4e,0x44,0x45,0x52,0x4e,0x45,0x41,0x54,0x48,0x20, - 0x54,0x48,0x45,0x20,0x53,0x55,0x52,0x46,0x41,0x43,0x45,0xa,0x20,0x20,0x20,0x20, - 0x2f,0x2f,0x20,0x53,0x4f,0x4d,0x45,0x20,0x4f,0x46,0x20,0x49,0x54,0x20,0x57,0x49, - 0x4c,0x4c,0x20,0x42,0x45,0x20,0x44,0x49,0x46,0x46,0x55,0x53,0x45,0x4c,0x59,0x20, - 0x4c,0x49,0x54,0x2c,0x20,0x42,0x55,0x54,0x20,0x54,0x48,0x45,0x52,0x45,0x20,0x57, - 0x49,0x4c,0x4c,0x20,0x42,0x45,0x20,0x53,0x55,0x42,0x53,0x55,0x52,0x46,0x41,0x43, - 0x45,0x20,0x53,0x43,0x41,0x54,0x54,0x45,0x52,0x49,0x4e,0x47,0x2c,0x20,0x45,0x53, - 0x54,0x49,0x4d,0x41,0x54,0x45,0x44,0x20,0x42,0x59,0x20,0x54,0x48,0x45,0x20,0x41, - 0x4d,0x42,0x49,0x45,0x4e,0x54,0x20,0x54,0x45,0x52,0x4d,0xa,0xa,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x34,0x20,0x64,0x69,0x66,0x66,0x75,0x73,0x65,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x34,0x28,0x72,0x65,0x64,0x20,0x2a,0x20,0x64,0x2c,0x20,0x67,0x72, - 0x65,0x65,0x6e,0x20,0x2a,0x20,0x64,0x2c,0x20,0x62,0x6c,0x75,0x65,0x20,0x2a,0x20, - 0x64,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x34,0x20,0x73,0x70,0x65,0x63,0x75,0x6c,0x61,0x72,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x34,0x28,0x31,0x2c,0x20,0x31,0x2c,0x20,0x31,0x2c,0x20,0x31,0x29,0x20,0x2a, - 0x20,0x70,0x6f,0x77,0x28,0x73,0x70,0x65,0x63,0x2c,0x20,0x31,0x30,0x2e,0x66,0x29, - 0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x61, - 0x6e,0x73,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, - 0x28,0x76,0x65,0x63,0x33,0x28,0x72,0x65,0x66,0x72,0x55,0x56,0x2c,0x20,0x31,0x2e, - 0x66,0x20,0x2d,0x20,0x72,0x65,0x66,0x72,0x55,0x56,0x2e,0x79,0x29,0x2c,0x20,0x31, - 0x2e,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77, - 0x61,0x74,0x65,0x72,0x42,0x6c,0x75,0x72,0x72,0x69,0x6e,0x65,0x73,0x73,0x20,0x3d, - 0x20,0x30,0x2e,0x66,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x72, - 0x65,0x66,0x72,0x55,0x56,0x42,0x6c,0x75,0x72,0x72,0x79,0x20,0x3d,0x20,0x28,0x31, - 0x20,0x2d,0x20,0x62,0x65,0x65,0x72,0x41,0x74,0x74,0x29,0x20,0x2a,0x20,0x76,0x65, - 0x63,0x32,0x28,0x72,0x61,0x6e,0x64,0x28,0x72,0x65,0x66,0x72,0x55,0x56,0x29,0x2c, - 0x20,0x72,0x61,0x6e,0x64,0x28,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x2c,0x20, - 0x64,0x29,0x29,0x29,0x20,0x2a,0x20,0x77,0x61,0x74,0x65,0x72,0x42,0x6c,0x75,0x72, - 0x72,0x69,0x6e,0x65,0x73,0x73,0x20,0x2b,0x20,0x72,0x65,0x66,0x72,0x55,0x56,0x3b, - 0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x61,0x6e,0x73,0x6d, - 0x69,0x73,0x73,0x69,0x76,0x65,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, - 0x28,0x67,0x72,0x6f,0x75,0x6e,0x64,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x2c,0x20, - 0x76,0x65,0x63,0x32,0x28,0x72,0x65,0x66,0x72,0x55,0x56,0x42,0x6c,0x75,0x72,0x72, - 0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x6d,0x75, - 0x72,0x6b,0x20,0x3d,0x20,0x28,0x76,0x65,0x63,0x34,0x28,0x77,0x61,0x74,0x65,0x72, - 0x56,0x6f,0x6c,0x75,0x6d,0x65,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x64,0x20, - 0x2a,0x20,0x6d,0x75,0x72,0x6b,0x44,0x69,0x66,0x66,0x75,0x73,0x65,0x20,0x2b,0x20, - 0x77,0x61,0x74,0x65,0x72,0x56,0x6f,0x6c,0x75,0x6d,0x65,0x43,0x6f,0x6c,0x6f,0x72, - 0x20,0x2a,0x20,0x6d,0x75,0x72,0x6b,0x41,0x6d,0x62,0x69,0x65,0x6e,0x74,0x2c,0x20, - 0x31,0x2e,0x30,0x66,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x34,0x20,0x73,0x6b,0x79,0x52,0x65,0x66,0x6c,0x20,0x3d,0x20,0x74,0x65,0x78,0x74, - 0x75,0x72,0x65,0x28,0x73,0x6b,0x79,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x2c,0x20, - 0x76,0x65,0x63,0x32,0x28,0x72,0x65,0x66,0x6c,0x55,0x56,0x29,0x29,0x3b,0xa,0x2f, - 0x2f,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x2a,0x3d, - 0x20,0x62,0x65,0x65,0x72,0x41,0x74,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x30,0x2e,0x37,0x35,0x66, - 0x20,0x2a,0x20,0x64,0x69,0x66,0x66,0x75,0x73,0x65,0x3b,0x20,0x2f,0x2f,0x20,0x44, - 0x69,0x66,0x66,0x75,0x73,0x65,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72,0x61, - 0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2c, - 0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0x2f,0x2f,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x2e,0x39,0x66,0x2c,0x31,0x2e,0x66,0x2c,0x31,0x2e,0x66,0x2c, - 0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f, - 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x72,0x65,0x64,0x20,0x2a,0x20,0x2e, - 0x32,0x66,0x2c,0x20,0x67,0x72,0x65,0x65,0x6e,0x20,0x2a,0x20,0x2e,0x32,0x66,0x2c, - 0x20,0x62,0x6c,0x75,0x65,0x20,0x2a,0x20,0x2e,0x32,0x66,0x2c,0x31,0x2e,0x66,0x29, - 0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20, - 0x2b,0x3d,0x20,0x31,0x2e,0x66,0x20,0x2a,0x20,0x73,0x70,0x65,0x63,0x75,0x6c,0x61, - 0x72,0x3b,0x20,0x2f,0x2f,0x20,0x53,0x70,0x65,0x63,0x75,0x6c,0x61,0x72,0x20,0x54, - 0x4f,0x44,0x4f,0x3a,0x20,0x50,0x61,0x73,0x73,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70, - 0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x73,0x20,0x61,0x73,0x20,0x75,0x6e,0x69, - 0x66,0x6f,0x72,0x6d,0x73,0x2e,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x66,0x72,0x61, - 0x67,0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66, - 0x29,0x3b,0x20,0x2f,0x2f,0x20,0x43,0x6c,0x61,0x6d,0x70,0xa,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2b,0x3d,0x20,0x30,0x2e,0x33, - 0x66,0x20,0x2a,0x20,0x73,0x6b,0x79,0x52,0x65,0x66,0x6c,0x3b,0xa,0x20,0x20,0x20, - 0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6c,0x61, - 0x6d,0x70,0x28,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x30,0x2e, - 0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x43,0x6c,0x61,0x6d, - 0x70,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72, - 0x20,0x2a,0x3d,0x20,0x20,0x28,0x28,0x31,0x20,0x2d,0x20,0x72,0x65,0x66,0x72,0x50, - 0x72,0x6f,0x62,0x29,0x20,0x2f,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0xa,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x74,0x72,0x69, - 0x63,0x20,0x3d,0x20,0x62,0x65,0x65,0x72,0x41,0x74,0x74,0x20,0x2a,0x20,0x74,0x72, - 0x61,0x6e,0x73,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x3b,0xa,0x20,0x20,0x20,0x20, - 0x76,0x6f,0x6c,0x75,0x6d,0x65,0x74,0x72,0x69,0x63,0x20,0x2b,0x3d,0x20,0x28,0x31, - 0x20,0x2d,0x20,0x62,0x65,0x65,0x72,0x41,0x74,0x74,0x29,0x20,0x2a,0x20,0x6d,0x75, - 0x72,0x6b,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c, - 0x6f,0x72,0x20,0x2b,0x3d,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x2a, - 0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x74,0x72,0x69,0x63,0x3b,0xa,0x2f,0x2f,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74, - 0x72,0x61,0x6e,0x73,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x20,0x2a,0x20,0x72,0x65, - 0x66,0x72,0x50,0x72,0x6f,0x62,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, - 0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x65,0x63, - 0x33,0x28,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x2c,0x20,0x31,0x2e, - 0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x44,0x69,0x76,0x69,0x64, - 0x69,0x6e,0x67,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x62,0x79,0x20, - 0x32,0x20,0x6a,0x75,0x73,0x74,0x20,0x66,0x6f,0x72,0x20,0x68,0x65,0x75,0x72,0x69, - 0x73,0x74,0x69,0x63,0x2e,0x20,0x57,0x61,0x6e,0x74,0x20,0x6d,0x6f,0x72,0x65,0x20, - 0x70,0x68,0x6f,0x6e,0x67,0x20,0x74,0x6f,0x20,0x73,0x68,0x6f,0x77,0x20,0x74,0x68, - 0x72,0x6f,0x75,0x67,0x68,0x2e,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72,0x61, + 0x29,0x3b,0xa,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x77,0x61,0x74,0x65,0x72,0x4d,0x75,0x72,0x6b,0x69,0x6e,0x65,0x73,0x73,0x20,0x3d, + 0x20,0x30,0x2e,0x30,0x30,0x32,0x66,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f, + 0x3a,0x20,0x4d,0x61,0x6b,0x65,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0xa,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x61,0x74,0x65,0x72,0x4d,0x75, + 0x72,0x6b,0x69,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30,0x30,0x30,0x35, + 0x66,0x3b,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x4d,0x61,0x6b,0x65, + 0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63, + 0x33,0x20,0x77,0x61,0x74,0x65,0x72,0x56,0x6f,0x6c,0x75,0x6d,0x65,0x43,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x72,0x65,0x64,0x20,0x2a,0x20, + 0x30,0x2e,0x31,0x66,0x2c,0x20,0x67,0x72,0x65,0x65,0x6e,0x20,0x2a,0x20,0x30,0x2e, + 0x32,0x66,0x2c,0x20,0x62,0x6c,0x75,0x65,0x20,0x2a,0x20,0x30,0x2e,0x32,0x66,0x29, + 0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x75,0x72,0x6b, + 0x44,0x69,0x66,0x66,0x75,0x73,0x65,0x20,0x3d,0x20,0x30,0x2e,0x33,0x66,0x3b,0xa, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x75,0x72,0x6b,0x41,0x6d, + 0x62,0x69,0x65,0x6e,0x74,0x20,0x3d,0x20,0x30,0x2e,0x38,0x66,0x3b,0xa,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x65,0x65,0x72,0x41,0x74,0x74,0x20, + 0x3d,0x20,0x65,0x78,0x70,0x28,0x2d,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x28,0x70, + 0x6f,0x73,0x20,0x2d,0x20,0x72,0x65,0x66,0x72,0x50,0x6f,0x73,0x29,0x29,0x20,0x2a, + 0x20,0x77,0x61,0x74,0x65,0x72,0x4d,0x75,0x72,0x6b,0x69,0x6e,0x65,0x73,0x73,0x29, + 0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x45,0x58,0x50,0x4c,0x41,0x4e,0x41, + 0x54,0x49,0x4f,0x4e,0x3a,0x20,0x57,0x48,0x45,0x4e,0x20,0x54,0x48,0x45,0x20,0x57, + 0x41,0x54,0x45,0x52,0x20,0x49,0x53,0x20,0x4e,0x4f,0x54,0x20,0x50,0x45,0x52,0x46, + 0x45,0x43,0x54,0x4c,0x59,0x20,0x43,0x4c,0x45,0x41,0x52,0x2c,0x20,0x49,0x54,0x20, + 0x57,0x49,0x4c,0x4c,0x20,0x48,0x41,0x56,0x45,0x20,0x53,0x54,0x55,0x46,0x46,0x20, + 0x53,0x43,0x41,0x54,0x54,0x45,0x52,0x49,0x4e,0x47,0x20,0x4c,0x49,0x47,0x48,0x54, + 0x20,0x55,0x4e,0x44,0x45,0x52,0x4e,0x45,0x41,0x54,0x48,0x20,0x54,0x48,0x45,0x20, + 0x53,0x55,0x52,0x46,0x41,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x53, + 0x4f,0x4d,0x45,0x20,0x4f,0x46,0x20,0x49,0x54,0x20,0x57,0x49,0x4c,0x4c,0x20,0x42, + 0x45,0x20,0x44,0x49,0x46,0x46,0x55,0x53,0x45,0x4c,0x59,0x20,0x4c,0x49,0x54,0x2c, + 0x20,0x42,0x55,0x54,0x20,0x54,0x48,0x45,0x52,0x45,0x20,0x57,0x49,0x4c,0x4c,0x20, + 0x42,0x45,0x20,0x53,0x55,0x42,0x53,0x55,0x52,0x46,0x41,0x43,0x45,0x20,0x53,0x43, + 0x41,0x54,0x54,0x45,0x52,0x49,0x4e,0x47,0x2c,0x20,0x45,0x53,0x54,0x49,0x4d,0x41, + 0x54,0x45,0x44,0x20,0x42,0x59,0x20,0x54,0x48,0x45,0x20,0x41,0x4d,0x42,0x49,0x45, + 0x4e,0x54,0x20,0x54,0x45,0x52,0x4d,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63, + 0x34,0x20,0x64,0x69,0x66,0x66,0x75,0x73,0x65,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, + 0x28,0x72,0x65,0x64,0x20,0x2a,0x20,0x64,0x2c,0x20,0x67,0x72,0x65,0x65,0x6e,0x20, + 0x2a,0x20,0x64,0x2c,0x20,0x62,0x6c,0x75,0x65,0x20,0x2a,0x20,0x64,0x2c,0x20,0x31, + 0x2e,0x30,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x73, + 0x70,0x65,0x63,0x75,0x6c,0x61,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x31, + 0x2c,0x20,0x31,0x2c,0x20,0x31,0x2c,0x20,0x31,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77, + 0x28,0x73,0x70,0x65,0x63,0x2c,0x20,0x31,0x30,0x2e,0x66,0x29,0x3b,0xa,0x2f,0x2f, + 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x61,0x6e,0x73,0x6d,0x69, + 0x73,0x73,0x69,0x76,0x65,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x65,0x63, + 0x33,0x28,0x72,0x65,0x66,0x72,0x55,0x56,0x2c,0x20,0x31,0x2e,0x66,0x20,0x2d,0x20, + 0x72,0x65,0x66,0x72,0x55,0x56,0x2e,0x79,0x29,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b, + 0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x61,0x74,0x65,0x72, + 0x42,0x6c,0x75,0x72,0x72,0x69,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x66, + 0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x72,0x65,0x66,0x72,0x55, + 0x56,0x42,0x6c,0x75,0x72,0x72,0x79,0x20,0x3d,0x20,0x28,0x31,0x20,0x2d,0x20,0x62, + 0x65,0x65,0x72,0x41,0x74,0x74,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x72, + 0x61,0x6e,0x64,0x28,0x72,0x65,0x66,0x72,0x55,0x56,0x29,0x2c,0x20,0x72,0x61,0x6e, + 0x64,0x28,0x76,0x65,0x63,0x34,0x28,0x70,0x6f,0x73,0x2c,0x20,0x64,0x29,0x29,0x29, + 0x20,0x2a,0x20,0x77,0x61,0x74,0x65,0x72,0x42,0x6c,0x75,0x72,0x72,0x69,0x6e,0x65, + 0x73,0x73,0x20,0x2b,0x20,0x72,0x65,0x66,0x72,0x55,0x56,0x3b,0xa,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x61,0x6e,0x73,0x6d,0x69,0x73,0x73,0x69, + 0x76,0x65,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x67,0x72,0x6f, + 0x75,0x6e,0x64,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x2c,0x20,0x76,0x65,0x63,0x32, + 0x28,0x72,0x65,0x66,0x72,0x55,0x56,0x42,0x6c,0x75,0x72,0x72,0x79,0x29,0x29,0x3b, + 0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x6d,0x75,0x72,0x6b,0x20,0x3d, + 0x20,0x28,0x76,0x65,0x63,0x34,0x28,0x77,0x61,0x74,0x65,0x72,0x56,0x6f,0x6c,0x75, + 0x6d,0x65,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x64,0x20,0x2a,0x20,0x6d,0x75, + 0x72,0x6b,0x44,0x69,0x66,0x66,0x75,0x73,0x65,0x20,0x2b,0x20,0x77,0x61,0x74,0x65, + 0x72,0x56,0x6f,0x6c,0x75,0x6d,0x65,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x6d, + 0x75,0x72,0x6b,0x41,0x6d,0x62,0x69,0x65,0x6e,0x74,0x2c,0x20,0x31,0x2e,0x30,0x66, + 0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x73,0x6b, + 0x79,0x52,0x65,0x66,0x6c,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, + 0x73,0x6b,0x79,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x2c,0x20,0x76,0x65,0x63,0x32, + 0x28,0x72,0x65,0x66,0x6c,0x55,0x56,0x29,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20, + 0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x2a,0x3d,0x20,0x62,0x65,0x65, + 0x72,0x41,0x74,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43, + 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x30,0x2e,0x37,0x35,0x66,0x20,0x2a,0x20,0x64, + 0x69,0x66,0x66,0x75,0x73,0x65,0x3b,0x20,0x2f,0x2f,0x20,0x44,0x69,0x66,0x66,0x75, + 0x73,0x65,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20, + 0x30,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66, + 0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, + 0x2e,0x39,0x66,0x2c,0x31,0x2e,0x66,0x2c,0x31,0x2e,0x66,0x2c,0x30,0x29,0x3b,0xa, + 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, + 0x76,0x65,0x63,0x34,0x28,0x72,0x65,0x64,0x20,0x2a,0x20,0x2e,0x32,0x66,0x2c,0x20, + 0x67,0x72,0x65,0x65,0x6e,0x20,0x2a,0x20,0x2e,0x32,0x66,0x2c,0x20,0x62,0x6c,0x75, + 0x65,0x20,0x2a,0x20,0x2e,0x32,0x66,0x2c,0x31,0x2e,0x66,0x29,0x3b,0xa,0x20,0x20, + 0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2b,0x3d,0x20,0x31, + 0x2e,0x66,0x20,0x2a,0x20,0x73,0x70,0x65,0x63,0x75,0x6c,0x61,0x72,0x3b,0x20,0x2f, + 0x2f,0x20,0x53,0x70,0x65,0x63,0x75,0x6c,0x61,0x72,0x20,0x54,0x4f,0x44,0x4f,0x3a, + 0x20,0x50,0x61,0x73,0x73,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x69,0x63,0x61, + 0x74,0x69,0x6f,0x6e,0x73,0x20,0x61,0x73,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, + 0x73,0x2e,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72, + 0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c, + 0x6f,0x72,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0x20,0x2f, + 0x2f,0x20,0x43,0x6c,0x61,0x6d,0x70,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67, + 0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2b,0x3d,0x20,0x30,0x2e,0x33,0x66,0x20,0x2a,0x20, + 0x73,0x6b,0x79,0x52,0x65,0x66,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61, 0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x66, 0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x31, - 0x2e,0x66,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x72,0x65,0x66,0x72, - 0x50,0x72,0x6f,0x62,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20, - 0x31,0x2e,0x66,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x54,0x4f, - 0x44,0x4f,0x3a,0x20,0x41,0x43,0x54,0x55,0x41,0x4c,0x20,0x4c,0x49,0x47,0x48,0x54, - 0x49,0x4e,0x47,0x20,0x4d,0x4f,0x44,0x45,0x4c,0x20,0x53,0x48,0x4f,0x55,0x4c,0x44, - 0x20,0x42,0x45,0x20,0x53,0x4f,0x4d,0x45,0x54,0x48,0x49,0x4e,0x47,0x20,0x4c,0x49, - 0x4b,0x45,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x56,0x45,0x4c,0x4f,0x43,0x49, - 0x54,0x59,0x20,0x2a,0x20,0x44,0x49,0x46,0x46,0x55,0x53,0x45,0xa,0x20,0x20,0x20, - 0x20,0x2f,0x2f,0x20,0x28,0x31,0x20,0x2d,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f, - 0x62,0x29,0x20,0x2a,0x20,0x53,0x50,0x45,0x43,0x55,0x4c,0x41,0x52,0xa,0x20,0x20, - 0x20,0x20,0x2f,0x2f,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x2a,0x20, - 0x28,0x42,0x45,0x45,0x52,0x20,0x2a,0x20,0x54,0x52,0x41,0x4e,0x53,0x4d,0x49,0x53, - 0x53,0x49,0x56,0x45,0x20,0x2b,0x20,0x28,0x31,0x20,0x2d,0x20,0x62,0x65,0x65,0x72, - 0x41,0x74,0x74,0x29,0x20,0x2a,0x20,0x56,0x4f,0x4c,0x55,0x4d,0x45,0x20,0x28,0x77, - 0x68,0x69,0x63,0x68,0x20,0x69,0x73,0x20,0x73,0x6f,0x6d,0x65,0x77,0x68,0x61,0x74, - 0x20,0x64,0x69,0x66,0x66,0x75,0x73,0x65,0x20,0x74,0x6f,0x6f,0x3f,0x29,0x29,0xa, - 0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x54,0x72,0x61,0x6e,0x73,0x6d,0x69,0x73,0x73, - 0x69,0x76,0x65,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x6e,0x27,0x74,0x20,0x6a,0x75, - 0x73,0x74,0x20,0x67,0x65,0x74,0x20,0x64,0x61,0x72,0x6b,0x65,0x72,0x2c,0x20,0x62, - 0x75,0x74,0x20,0x62,0x6c,0x75,0x72,0x72,0x69,0x65,0x72,0x20,0x61,0x73,0x20,0x62, - 0x65,0x65,0x72,0x20,0x61,0x74,0x74,0x65,0x6e,0x75,0x61,0x74,0x69,0x6f,0x6e,0x20, - 0x6c,0x6f,0x77,0x65,0x72,0x73,0x2e,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x67,0x72,0x6f,0x75,0x6e,0x64,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x2c, - 0x20,0x76,0x65,0x63,0x32,0x28,0x72,0x65,0x66,0x72,0x55,0x56,0x29,0x29,0x3b,0xa, - 0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x5b,0x30,0x5d,0x2c,0x20,0x30,0x2c,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63, - 0x65,0x5b,0x31,0x5d,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x64,0x69, - 0x66,0x66,0x75,0x73,0x65,0x3b,0xa,0x7d,0xa, + 0x2e,0x66,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x43,0x6c,0x61,0x6d,0x70,0xa,0xa,0x20, + 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x3d,0x20, + 0x20,0x28,0x28,0x31,0x20,0x2d,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x29, + 0x20,0x2f,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x65, + 0x63,0x34,0x20,0x76,0x6f,0x6c,0x75,0x6d,0x65,0x74,0x72,0x69,0x63,0x20,0x3d,0x20, + 0x62,0x65,0x65,0x72,0x41,0x74,0x74,0x20,0x2a,0x20,0x74,0x72,0x61,0x6e,0x73,0x6d, + 0x69,0x73,0x73,0x69,0x76,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x6f,0x6c,0x75, + 0x6d,0x65,0x74,0x72,0x69,0x63,0x20,0x2b,0x3d,0x20,0x28,0x31,0x20,0x2d,0x20,0x62, + 0x65,0x65,0x72,0x41,0x74,0x74,0x29,0x20,0x2a,0x20,0x6d,0x75,0x72,0x6b,0x3b,0xa, + 0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x2b, + 0x3d,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x2a,0x20,0x76,0x6f,0x6c, + 0x75,0x6d,0x65,0x74,0x72,0x69,0x63,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66, + 0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x72,0x61,0x6e,0x73, + 0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x20,0x2a,0x20,0x72,0x65,0x66,0x72,0x50,0x72, + 0x6f,0x62,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f, + 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x76,0x65,0x63,0x33,0x28,0x66,0x72, + 0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa, + 0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x44,0x69,0x76,0x69,0x64,0x69,0x6e,0x67,0x20, + 0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x62,0x79,0x20,0x32,0x20,0x6a,0x75, + 0x73,0x74,0x20,0x66,0x6f,0x72,0x20,0x68,0x65,0x75,0x72,0x69,0x73,0x74,0x69,0x63, + 0x2e,0x20,0x57,0x61,0x6e,0x74,0x20,0x6d,0x6f,0x72,0x65,0x20,0x70,0x68,0x6f,0x6e, + 0x67,0x20,0x74,0x6f,0x20,0x73,0x68,0x6f,0x77,0x20,0x74,0x68,0x72,0x6f,0x75,0x67, + 0x68,0x2e,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x66,0x72,0x61,0x67,0x43, + 0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b, + 0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72, + 0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62, + 0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x30,0x2e,0x66,0x2c,0x20,0x31,0x2e,0x66,0x29, + 0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20, + 0x41,0x43,0x54,0x55,0x41,0x4c,0x20,0x4c,0x49,0x47,0x48,0x54,0x49,0x4e,0x47,0x20, + 0x4d,0x4f,0x44,0x45,0x4c,0x20,0x53,0x48,0x4f,0x55,0x4c,0x44,0x20,0x42,0x45,0x20, + 0x53,0x4f,0x4d,0x45,0x54,0x48,0x49,0x4e,0x47,0x20,0x4c,0x49,0x4b,0x45,0xa,0x20, + 0x20,0x20,0x20,0x2f,0x2f,0x20,0x56,0x45,0x4c,0x4f,0x43,0x49,0x54,0x59,0x20,0x2a, + 0x20,0x44,0x49,0x46,0x46,0x55,0x53,0x45,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20, + 0x28,0x31,0x20,0x2d,0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x29,0x20,0x2a, + 0x20,0x53,0x50,0x45,0x43,0x55,0x4c,0x41,0x52,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f, + 0x20,0x72,0x65,0x66,0x72,0x50,0x72,0x6f,0x62,0x20,0x2a,0x20,0x28,0x42,0x45,0x45, + 0x52,0x20,0x2a,0x20,0x54,0x52,0x41,0x4e,0x53,0x4d,0x49,0x53,0x53,0x49,0x56,0x45, + 0x20,0x2b,0x20,0x28,0x31,0x20,0x2d,0x20,0x62,0x65,0x65,0x72,0x41,0x74,0x74,0x29, + 0x20,0x2a,0x20,0x56,0x4f,0x4c,0x55,0x4d,0x45,0x20,0x28,0x77,0x68,0x69,0x63,0x68, + 0x20,0x69,0x73,0x20,0x73,0x6f,0x6d,0x65,0x77,0x68,0x61,0x74,0x20,0x64,0x69,0x66, + 0x66,0x75,0x73,0x65,0x20,0x74,0x6f,0x6f,0x3f,0x29,0x29,0xa,0x20,0x20,0x20,0x20, + 0x2f,0x2f,0x20,0x54,0x72,0x61,0x6e,0x73,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x20, + 0x73,0x68,0x6f,0x75,0x6c,0x64,0x6e,0x27,0x74,0x20,0x6a,0x75,0x73,0x74,0x20,0x67, + 0x65,0x74,0x20,0x64,0x61,0x72,0x6b,0x65,0x72,0x2c,0x20,0x62,0x75,0x74,0x20,0x62, + 0x6c,0x75,0x72,0x72,0x69,0x65,0x72,0x20,0x61,0x73,0x20,0x62,0x65,0x65,0x72,0x20, + 0x61,0x74,0x74,0x65,0x6e,0x75,0x61,0x74,0x69,0x6f,0x6e,0x20,0x6c,0x6f,0x77,0x65, + 0x72,0x73,0x2e,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f, + 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x67,0x72, + 0x6f,0x75,0x6e,0x64,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x2c,0x20,0x76,0x65,0x63, + 0x32,0x28,0x72,0x65,0x66,0x72,0x55,0x56,0x29,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20, + 0x20,0x20,0x66,0x72,0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65, + 0x63,0x34,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53, + 0x70,0x61,0x63,0x65,0x5b,0x30,0x5d,0x2c,0x20,0x30,0x2c,0x20,0x6e,0x6f,0x72,0x6d, + 0x61,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x53,0x70,0x61,0x63,0x65,0x5b,0x31,0x5d, + 0x2c,0x20,0x31,0x2e,0x66,0x29,0x3b,0xa,0x2f,0x2f,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x43,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x64,0x69,0x66,0x66,0x75,0x73, + 0x65,0x3b,0xa,0x7d,0xa, // /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/caustic_sample.jpg 0x0,0x1,0x55,0xb5, 0xff, @@ -292427,6 +292733,16 @@ static const unsigned char qt_resource_name[] = { 0x9,0xe7,0xac,0x73, 0x0,0x73, 0x0,0x68,0x0,0x61,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x73, + // color.vert + 0x0,0xa, + 0x6,0x58,0x80,0xf4, + 0x0,0x63, + 0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x2e,0x0,0x76,0x0,0x65,0x0,0x72,0x0,0x74, + // color.frag + 0x0,0xa, + 0x6,0x59,0x94,0x17, + 0x0,0x63, + 0x0,0x6f,0x0,0x6c,0x0,0x6f,0x0,0x72,0x0,0x2e,0x0,0x66,0x0,0x72,0x0,0x61,0x0,0x67, // texture.vert 0x0,0xc, 0x7,0x5c,0x3b,0x14, @@ -292514,55 +292830,61 @@ static const unsigned char qt_resource_struct[] = { 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/resources/images - 0x0,0x0,0x0,0x18,0x0,0x2,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xb, + 0x0,0x0,0x0,0x18,0x0,0x2,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xd, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/resources/shaders - 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x4, + 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x4, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, - // :/resources/shaders/texture.vert + // :/resources/shaders/color.vert 0x0,0x0,0x0,0x3e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, +0x0,0x0,0x1,0x8f,0x5d,0xd8,0x6b,0x15, + // :/resources/shaders/color.frag + 0x0,0x0,0x0,0x58,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc,0xf6, +0x0,0x0,0x1,0x8f,0x5d,0xd8,0x6b,0x15, + // :/resources/shaders/texture.vert + 0x0,0x0,0x0,0x72,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x12,0x3a, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x7a, // :/resources/shaders/texture.frag - 0x0,0x0,0x0,0xce,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x6,0x98, + 0x0,0x0,0x1,0x2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x18,0xd2, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x7a, // :/resources/shaders/anchorPoint.frag - 0x0,0x0,0x0,0x5c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x8c, + 0x0,0x0,0x0,0x90,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x13,0xc6, 0x0,0x0,0x1,0x8e,0xa4,0xf3,0xf5,0x48, // :/resources/shaders/anchorPoint.geom - 0x0,0x0,0x0,0x82,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0x12, + 0x0,0x0,0x0,0xb6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x14,0x4c, 0x0,0x0,0x1,0x8f,0xd,0xe3,0x6f,0xf0, // :/resources/shaders/anchorPoint.vert - 0x0,0x0,0x0,0xa8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x5,0x44, + 0x0,0x0,0x0,0xdc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x17,0x7e, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x7a, // :/resources/shaders/shader.vert - 0x0,0x0,0x0,0xec,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x8,0xc1, -0x0,0x0,0x1,0x8f,0x41,0x3a,0x4b,0x8f, + 0x0,0x0,0x1,0x20,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1a,0xfb, +0x0,0x0,0x1,0x8f,0x5d,0xd8,0x6b,0x17, // :/resources/shaders/shader.frag - 0x0,0x0,0x1,0x8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x16,0x18, -0x0,0x0,0x1,0x8f,0x44,0xe8,0xa7,0xca, + 0x0,0x0,0x1,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x28,0x99, +0x0,0x0,0x1,0x8f,0x5d,0xd8,0x6b,0x16, // :/resources/images/caustic_sample.jpg - 0x0,0x0,0x1,0x24,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x28,0x86, + 0x0,0x0,0x1,0x58,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x3b,0x43, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x6b, // :/resources/images/hello.png - 0x0,0x0,0x1,0x96,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x30,0x75,0x8c, + 0x0,0x0,0x1,0xca,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x30,0x88,0x49, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x6d, // :/resources/images/anamorphic.jpg - 0x0,0x0,0x1,0xce,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x37,0xd9,0x5c, + 0x0,0x0,0x2,0x2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x37,0xec,0x19, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x6a, // :/resources/images/kitten.png - 0x0,0x0,0x1,0x4e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x7e,0x3f, + 0x0,0x0,0x1,0x82,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x90,0xfc, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x72, // :/resources/images/uv1.png - 0x0,0x0,0x1,0x82,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2f,0xb9,0xf4, + 0x0,0x0,0x1,0xb6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2f,0xcc,0xb1, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x72, // :/resources/images/sky_clouds.png - 0x0,0x0,0x1,0xf0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x38,0x4e,0x5e, -0x0,0x0,0x1,0x8f,0x41,0x3a,0x4b,0x8e, + 0x0,0x0,0x2,0x24,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x38,0x61,0x1b, +0x0,0x0,0x1,0x8f,0x4c,0x56,0x85,0x26, // :/resources/images/daniel.jpg - 0x0,0x0,0x1,0x68,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x19,0xf7,0x5f, -0x0,0x0,0x1,0x8f,0x41,0x3a,0x4b,0x8b, + 0x0,0x0,0x1,0x9c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1a,0xa,0x1c, +0x0,0x0,0x1,0x8f,0x4c,0x56,0x85,0x24, // :/resources/images/sand_text.jpg - 0x0,0x0,0x1,0xae,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x37,0x7e,0xea, + 0x0,0x0,0x1,0xe2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x37,0x91,0xa7, 0x0,0x0,0x1,0x8f,0x2a,0xcf,0x26,0x72, }; diff --git a/cmake-build-debug/CMakeFiles/ocean_autogen.dir/ParseCache.txt b/cmake-build-debug/CMakeFiles/ocean_autogen.dir/ParseCache.txt index d55e7dc..363ebe7 100644 --- a/cmake-build-debug/CMakeFiles/ocean_autogen.dir/ParseCache.txt +++ b/cmake-build-debug/CMakeFiles/ocean_autogen.dir/ParseCache.txt @@ -2,8 +2,7 @@ /Users/sotech117/Documents/final/adv/ocean-simulation/src/arap.h /Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean.h /Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/util/tiny_obj_loader.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shape.cpp /Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.h mmc:Q_OBJECT mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.h @@ -1388,7 +1387,8 @@ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsexports.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsglobal.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qwidget.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shape.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/util/tiny_obj_loader.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.h /Users/sotech117/Documents/final/adv/ocean-simulation/src/arap.cpp /Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/meshloader.cpp /Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shader.h diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 2c5f261..41fa4a8 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: May 04 15:14 EDT +Start testing: May 09 15:02 EDT ---------------------------------------------------------- -End testing: May 04 15:14 EDT +End testing: May 09 15:02 EDT diff --git a/cmake-build-debug/build.ninja b/cmake-build-debug/build.ninja index 299a3cc..50e4a07 100644 --- a/cmake-build-debug/build.ninja +++ b/cmake-build-debug/build.ninja @@ -268,7 +268,7 @@ build StaticGLEW_autogen: phony CMakeFiles/StaticGLEW_autogen StaticGLEW_autogen ############################################# # Custom command for .rcc/qrc_Resources.cpp -build .rcc/qrc_Resources.cpp | ${cmake_ninja_workdir}.rcc/qrc_Resources.cpp: CUSTOM_COMMAND /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/uv1.png /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/kitten.png /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/hello.png /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/sand_text.jpg /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/caustic_sample.jpg /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/anamorphic.jpg /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/daniel.jpg /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/sky_clouds.png /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/shader.frag /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/shader.vert /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/anchorPoint.vert /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/anchorPoint.geom /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/anchorPoint.frag /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/texture.vert /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/texture.frag .rcc/Resources.qrc /Users/sotech117/Qt/6.5.2/macos/./libexec/rcc || StaticGLEW_autogen StaticGLEW_autogen_timestamp_deps libStaticGLEW.a ocean_autogen ocean_autogen_timestamp_deps +build .rcc/qrc_Resources.cpp | ${cmake_ninja_workdir}.rcc/qrc_Resources.cpp: CUSTOM_COMMAND /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/uv1.png /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/kitten.png /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/hello.png /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/sand_text.jpg /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/caustic_sample.jpg /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/anamorphic.jpg /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/daniel.jpg /Users/sotech117/Documents/final/adv/ocean-simulation/resources/images/sky_clouds.png /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/shader.frag /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/shader.vert /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/anchorPoint.vert /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/anchorPoint.geom /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/anchorPoint.frag /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/texture.vert /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/texture.frag /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/color.vert /Users/sotech117/Documents/final/adv/ocean-simulation/resources/shaders/color.frag .rcc/Resources.qrc /Users/sotech117/Qt/6.5.2/macos/./libexec/rcc || StaticGLEW_autogen StaticGLEW_autogen_timestamp_deps libStaticGLEW.a ocean_autogen ocean_autogen_timestamp_deps COMMAND = cd /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug && /Users/sotech117/Qt/6.5.2/macos/./libexec/rcc --output /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/.rcc/qrc_Resources.cpp --name Resources /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/.rcc/Resources.qrc --no-zstd DESC = Running rcc for resource Resources restat = 1 @@ -297,7 +297,7 @@ build StaticGLEW_autogen/timestamp StaticGLEW_autogen/mocs_compilation.cpp | ${c ############################################# # Phony custom command for CMakeFiles/ocean_autogen_timestamp_deps -build CMakeFiles/ocean_autogen_timestamp_deps | ${cmake_ninja_workdir}CMakeFiles/ocean_autogen_timestamp_deps: phony /Users/sotech117/Qt/6.5.2/macos/./libexec/moc /Users/sotech117/Qt/6.5.2/macos/./libexec/uic libStaticGLEW.a || StaticGLEW_autogen StaticGLEW_autogen_timestamp_deps libStaticGLEW.a +build CMakeFiles/ocean_autogen_timestamp_deps | ${cmake_ninja_workdir}CMakeFiles/ocean_autogen_timestamp_deps: phony libStaticGLEW.a /Users/sotech117/Qt/6.5.2/macos/./libexec/moc /Users/sotech117/Qt/6.5.2/macos/./libexec/uic || StaticGLEW_autogen StaticGLEW_autogen_timestamp_deps libStaticGLEW.a ############################################# diff --git a/cmake-build-debug/ocean b/cmake-build-debug/ocean index ff53975..552319e 100755 Binary files a/cmake-build-debug/ocean and b/cmake-build-debug/ocean differ diff --git a/src/arap.cpp b/src/arap.cpp index 2f10849..729de07 100644 --- a/src/arap.cpp +++ b/src/arap.cpp @@ -34,7 +34,7 @@ void ARAP::init // if (MeshLoader::loadTriMesh(m_mesh_path, vertices, triangles)) { // m_shape.init(vertices, triangles); // } - + m_ocean.update_ocean(); vertices = m_ocean.get_vertices(); triangles = m_ocean.get_faces(); m_shape.init(vertices, triangles); @@ -102,10 +102,16 @@ void ARAP::update(double seconds) // Note that the "seconds" parameter represents the amount of time that has passed since // the last update - - m_ocean.fft_prime(m_time); - // m_shape.setVertices_and_Normals(m_ocean.get_vertices(), m_ocean.getNormals()); - m_shape.setVertices(m_ocean.get_vertices()); + m_ocean.fft_prime(m_time); + m_ocean.update_ocean(); + // std::cout << "updating ocean" << std::endl; + auto tmp = m_ocean.get_vertices(); + // print the vertex +// std::cout << "faces\t" << m_ocean.get_faces().size() << std::endl; +// std::cout << "noormals\t" << m_ocean.getNormals().size() << std::endl; +// std::cout << "vertices\t" << tmp.size() << std::endl; + m_shape.setVertices_and_Normals(m_ocean.get_vertices(), m_ocean.getNormals()); + // m_shape.setVertices(m_ocean.get_vertices()); m_time += m_timestep; diff --git a/src/ocean/ocean_alt.cpp b/src/ocean/ocean_alt.cpp index ca080cd..6355abd 100644 --- a/src/ocean/ocean_alt.cpp +++ b/src/ocean/ocean_alt.cpp @@ -45,10 +45,17 @@ void ocean_alt::init_wave_index_constants(){ // initialize m_current_h to be h0 for now // m_current_h.push_back(h0_prime); m_current_h.push_back(Eigen::Vector2d(0.0, 0.0)); - m_displacements.push_back(Eigen::Vector2d(0.0, 0.0)); - m_slopes.push_back(Eigen::Vector2d(0.0, 0.0)); + // m_displacements.push_back(Eigen::Vector2d(0.0, 0.0)); + // m_slopes.push_back(Eigen::Vector2d(0.0, 0.0)); m_normals.push_back(Eigen::Vector3f(0.0, 1.0, 0.0)); + m_slopes_x.push_back(Eigen::Vector2d(0.0, 0.0)); + m_slopes_z.push_back(Eigen::Vector2d(0.0, 0.0)); + + m_displacements_x.push_back(Eigen::Vector2d(0.0, 0.0)); + m_displacements_z.push_back(Eigen::Vector2d(0.0, 0.0)); + + m_vertices.push_back(Eigen::Vector3f(0.0, 0.0, 0.0)); } } @@ -57,8 +64,14 @@ void ocean_alt::fft_prime(double t){ // FFT std::vector h_tildas = std::vector(); - std::vector ikh = std::vector(); - std::vector neg_ik_hat_h = std::vector(); + // std::vector ikh = std::vector(); +// std::vector neg_ik_hat_h = std::vector(); + + std::vector ikhx = std::vector(); + std::vector ikhz = std::vector(); + + std::vector neg_ik_hat_h_x = std::vector(); + std::vector neg_ik_hat_h_z = std::vector(); // find each h_tilda at each index, to be used for next for loop for (int i=0; i tmp = fast_fft(h_tildas); - std::vector tmp2 = fast_fft(ikh); - std::vector tmp3 = fast_fft(neg_ik_hat_h); +// std::vector tmp2 = fast_fft(ikh); + // std::vector tmp3 = fast_fft(neg_ik_hat_h); + std::vector tmp4 = fast_fft(ikhx); + std::vector tmp5 = fast_fft(ikhz); + std::vector tmp6 = fast_fft(neg_ik_hat_h_x); + std::vector tmp7 = fast_fft(neg_ik_hat_h_z); for (int i = 0; i < N; i++) { m_current_h[i] = tmp[i]; - m_slopes[i] = tmp2[i]; - m_displacements[i] = tmp3[i]; + // m_slopes[i] = tmp2[i]; + // m_displacements[i] = tmp3[i]; + m_slopes_x[i] = tmp4[i]; + m_slopes_z[i] = tmp5[i]; + m_displacements_x[i] = tmp6[i]; + m_displacements_z[i] = tmp7[i]; } return; @@ -95,8 +130,8 @@ void ocean_alt::fft_prime(double t){ for (int i=0; i ocean_alt::get_vertices() +void ocean_alt::update_ocean() { - std::vector vertices = std::vector(); + // reset normals & vertices arrays for the single tile + m_vertices = std::vector(N); + m_normals = std::vector(N); for (int i = 0; i < N; i++){ Eigen::Vector2d horiz_pos = spacing*m_waveIndexConstants[i].base_horiz_pos; Eigen::Vector2d amplitude = m_current_h[i]; float height = amplitude[0]; - Eigen::Vector2d slope = m_slopes[i] * .3f; - Eigen::Vector3f s = Eigen::Vector3f(-slope[0], 0.0, -slope[1]); - Eigen::Vector3f y = Eigen::Vector3f(0.0, 1.0, 0.0); + // Eigen::Vector2d slope = m_slopes[i] * .3f; + // Eigen::Vector3f s = Eigen::Vector3f(-slope[0], 0.0, -slope[1]); + // Eigen::Vector3f y = Eigen::Vector3f(0.0, 1.0, 0.0); - float xs = 1.f + s[0]*s[0]; - float ys = 1.f + s[1]*s[1]; - float zs = 1.f + s[2]*s[2]; - - Eigen::Vector3f diff = y - s; - Eigen::Vector3f norm = Eigen::Vector3f(diff[0]/ sqrt(xs), diff[1]/ sqrt(ys), diff[2]/sqrt(zs)); +// float xs = 1.f + s[0]*s[0]; +// float ys = 1.f + s[1]*s[1]; +// float zs = 1.f + s[2]*s[2]; +// +// Eigen::Vector3f diff = y - s; +// Eigen::Vector3f Eigen::Vector3f(diff[0]/ sqrt(xs), diff[1]/ sqrt(ys), diff[2]/sqrt(zs)); // NEW -// Eigen::Vector3f norm = Eigen::Vector3f(-slope[0], 1.0, -slope[1]); - norm.normalize(); - //NEW - - - - + Eigen::Vector3f norm = Eigen::Vector3f(-m_slopes_x[i][0], 1.0, -m_slopes_z[i][0]); + norm = -norm.normalized(); // FIXME: why do I have to be inverted? //if (i==6) std::cout << amplitude[0] << std::endl; // calculate displacement - Eigen::Vector2d disp = lambda*m_displacements[i]; - - // + // Eigen::Vector2d disp = lambda*m_displacements[i]; + Eigen::Vector2d disp = lambda*Eigen::Vector2d(m_displacements_x[i][0], m_displacements_z[i][0]) + + Eigen::Vector2d(vertex_displacement, vertex_displacement); // set corner at 0,0 for retiling // for final vertex position, use the real number component of amplitude vector - vertices.push_back(Eigen::Vector3f(horiz_pos[0] + disp[0], height, horiz_pos[1] + disp[1])); + m_vertices[i] = {horiz_pos[0] + disp[0], height, horiz_pos[1] + disp[1]}; m_normals[i] = norm.normalized();//Eigen::Vector3f(-slope[0], 1.0, -slope[1]).normalized(); //std::cout << "normal: " << m_normals[i] << std::endl } - return vertices; +} + +std::vector ocean_alt::get_vertices(){ + // extend the returned array based on the tilecount + std::vector vertices = std::vector(); + for (int i = 0; i < num_tiles_x; i++) + { + for (int j = 0; j < num_tiles_z; j++) + { + for (int k = 0; k < N; k++) + { + double c = Lx - 2 / (num_rows / Lx); + Eigen::Vector3f vertex = m_vertices[k] + Eigen::Vector3f(i*(c), 0.0, (j)*(c)); + vertices.push_back(vertex); + } + } + } + + return vertices; } std::vector ocean_alt::getNormals(){ - return m_normals; + // based on the tile count, add more to the normals + std::vector normals = std::vector(); + // do the x 1D direction first + for (int i = 0; i < num_tiles_x; i++) + { + for (int j = 0; j < num_tiles_z; j++) + { + for (int k = 0; k < N; k++) + { + normals.push_back(m_normals[k]); + } + } + } + + + return normals; } std::vector ocean_alt::get_faces() { // connect the vertices into faces std::vector faces = std::vector(); - for (int i = 0; i < N; i++) - { - int x = i / num_rows; - int z = i % num_rows; + for (int i = 0; i < num_tiles_x; i++) + { + for (int j = 0; j < num_tiles_z; j++) + { + for (int k = 0; k < N; k++) + { + int x = k % num_rows; + int z = k / num_rows; - // connect the vertices into faces - if (x < num_rows - 1 && z < num_cols - 1) - { - int i1 = i; - int i2 = i + 1; - int i3 = i + num_rows; - int i4 = i + num_rows + 1; + // connect the vertices into faces + if (x < num_rows - 1 && z < num_cols - 1) + { + int tile_index_offset = (j + num_tiles_z * i) * N; + int i1 = k + tile_index_offset; + int i2 = k + 1 + tile_index_offset; + int i3 = k + num_rows + tile_index_offset; + int i4 = k + num_rows + 1 + tile_index_offset; + + faces.emplace_back(i2, i1, i3); + faces.emplace_back(i2, i3, i4); + } + } + } + } + return faces; + + +// for (int i = 0; i < N; i++) +// { +// int x = i / num_rows; +// int z = i % num_rows; +// +// // connect the vertices into faces +// if (x < num_rows - 1 && z < num_cols - 1) +// { +// int i1 = i; +// int i2 = i + 1; +// int i3 = i + num_rows; +// int i4 = i + num_rows + 1; +// // faces.emplace_back(i2, i1, i3); // faces.emplace_back(i2, i3, i4); - faces.emplace_back(i1, i2, i3); - faces.emplace_back(i3, i2, i4); - } - } - return faces; +// faces.emplace_back(i1, i2, i3); +// faces.emplace_back(i3, i2, i4); +// } +// } +// return faces; } Eigen::Vector2d muliply_complex(Eigen::Vector2d a, Eigen::Vector2d b) @@ -442,11 +535,11 @@ std::vector ocean_alt::fast_fft } // divide by N*N and add the signs based on the indices - double sign[] = {1, -1}; + double sign[] = {1.0, -1.0}; for (int i = 0; i < N; i++) { - // h[i] /= N; - h[i] /= sqrt(N); + h[i] /= N; + // h[i] /= sqrt(N); h[i] *= sign[(i / num_rows + i % num_cols) % 2]; } diff --git a/src/ocean/ocean_alt.h b/src/ocean/ocean_alt.h index 4bb1d54..13f0d0d 100644 --- a/src/ocean/ocean_alt.h +++ b/src/ocean/ocean_alt.h @@ -25,6 +25,7 @@ class ocean_alt public: ocean_alt(); void updateVertexAmplitudes(double t); + void update_ocean(); std::vector get_vertices(); std::vector get_faces(); void fft_prime(double t); @@ -66,26 +67,33 @@ private: const int num_rows = 256; const int num_cols = 256; + const int num_tiles_x = 5; + const int num_tiles_z = 1; + + const double vertex_displacement = Lx / 2; + const int N = num_rows*num_cols; // total number of grid points - const double lambda = 0; // how much displacement matters - const double spacing = 35.0; // spacing between grid points + const double lambda = .5; // how much displacement matters + const double spacing = 1.0; // spacing between grid points - const double A = 100; // numeric constant for the Phillips spectrum - const double V = 50; // wind speed + const double A = 15000; // numeric constant for the Phillips spectrum + const double V = 1000; // wind speed const double gravity = 9.81; const double L = V*V/gravity; const Eigen::Vector2d omega_wind = Eigen::Vector2d(1.0, 0.0); // wind direction, used in Phillips equation std::vector m_current_h; // current height fields for each K - std::vector m_displacements; // current displacement vector for each K - std::vector m_slopes; // current displacement vector for each K + // std::vector m_displacements; // current displacement vector for each K + // std::vector m_slopes; // current displacement vector for each K + std::vector m_slopes_x; + std::vector m_slopes_z; + std::vector m_displacements_x; + std::vector m_displacements_z; //std::vector m_slope_vectors; // current displacement vector for each K std::vector m_normals; // current displacement vector for each K - - - + std::vector m_vertices; // current displacement vector for each K const double D = 1.0; // Depth below mean water level (for dispersion relation) -- cgit v1.2.3-70-g09d2 From 8d8b4357299718d7c26aed0cf5221e15156e8b86 Mon Sep 17 00:00:00 2001 From: sotech117 Date: Thu, 9 May 2024 16:11:51 -0400 Subject: one-tile --- src/ocean/ocean_alt.h | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'src') diff --git a/src/ocean/ocean_alt.h b/src/ocean/ocean_alt.h index 13f0d0d..fa42d75 100644 --- a/src/ocean/ocean_alt.h +++ b/src/ocean/ocean_alt.h @@ -49,25 +49,15 @@ private: Eigen::Vector2d get_horiz_pos(int i); std::pair sample_complex_gaussian(); - - - - - - - - std::map m_waveIndexConstants; // stores constants that only need to be calculate once for each grid constant - - const double Lx = 512.0; const double Lz = 512.0; const int num_rows = 256; const int num_cols = 256; - const int num_tiles_x = 5; + const int num_tiles_x = 1; const int num_tiles_z = 1; const double vertex_displacement = Lx / 2; -- cgit v1.2.3-70-g09d2 From 14684344d553dee4b3cc252709716bff927e85b8 Mon Sep 17 00:00:00 2001 From: sotech117 Date: Thu, 9 May 2024 19:36:42 -0400 Subject: change viewport --- cmake-build-debug/.ninja_deps | Bin 739504 -> 788852 bytes cmake-build-debug/.ninja_log | 24 +++++++++ .../CMakeFiles/ocean_autogen.dir/ParseCache.txt | 54 ++++++++++----------- cmake-build-debug/Testing/Temporary/LastTest.log | 4 +- cmake-build-debug/ocean | Bin 8748664 -> 8638680 bytes src/arap.cpp | 16 +++++- src/ocean/ocean_alt.cpp | 2 +- src/ocean/ocean_alt.h | 2 +- 8 files changed, 69 insertions(+), 33 deletions(-) (limited to 'src') diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index b1b950d..da58100 100644 Binary files a/cmake-build-debug/.ninja_deps and b/cmake-build-debug/.ninja_deps differ diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 371a403..bb67914 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -39,3 +39,27 @@ 16 64 1715281338252186848 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 69 1286 1715281339468067863 CMakeFiles/ocean.dir/src/ocean/ocean_alt.cpp.o ad7112753002ff6a 1286 1448 1715281339634009005 ocean 90ea6245b9d0c531 +12 1510 1715297341380746000 ocean_autogen/timestamp 43dd0284b7c480b9 +12 1510 1715297341380746000 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +12 1510 1715297341380746000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 +12 1510 1715297341380746000 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +1521 3259 1715297343146557713 CMakeFiles/ocean.dir/src/ocean/ocean_alt.cpp.o ad7112753002ff6a +1521 4165 1715297344049177658 CMakeFiles/ocean.dir/src/graphics/shape.cpp.o fad1395b11fceaa7 +1511 4736 1715297344619832271 CMakeFiles/ocean.dir/ocean_autogen/mocs_compilation.cpp.o a0b6000c88b7e2e0 +1515 4798 1715297344682105484 CMakeFiles/ocean.dir/src/main.cpp.o 11d1d3bb5133c4bd +1520 4836 1715297344714963200 CMakeFiles/ocean.dir/src/arap.cpp.o 46f485071c8cb61b +1512 4844 1715297344718772169 CMakeFiles/ocean.dir/src/mainwindow.cpp.o b8eab0029b0c2d42 +1520 5532 1715297345415079003 CMakeFiles/ocean.dir/src/glwidget.cpp.o b59369eca2fe4e32 +5533 5683 1715297345575695612 ocean 90ea6245b9d0c531 +15 65 1715297382540457798 ocean_autogen/timestamp 43dd0284b7c480b9 +15 65 1715297382540457798 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +15 65 1715297382540457798 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 +15 65 1715297382540457798 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +69 1891 1715297384358715306 CMakeFiles/ocean.dir/src/arap.cpp.o 46f485071c8cb61b +1891 2012 1715297384485096862 ocean 90ea6245b9d0c531 +13 50 1715297426833568293 ocean_autogen/timestamp 43dd0284b7c480b9 +13 50 1715297426833568293 ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +13 50 1715297426833568293 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/timestamp 43dd0284b7c480b9 +13 50 1715297426833568293 /Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/mocs_compilation.cpp 43dd0284b7c480b9 +54 1741 1715297428517242555 CMakeFiles/ocean.dir/src/arap.cpp.o 46f485071c8cb61b +1741 1862 1715297428643492070 ocean 90ea6245b9d0c531 diff --git a/cmake-build-debug/CMakeFiles/ocean_autogen.dir/ParseCache.txt b/cmake-build-debug/CMakeFiles/ocean_autogen.dir/ParseCache.txt index 363ebe7..5a5531e 100644 --- a/cmake-build-debug/CMakeFiles/ocean_autogen.dir/ParseCache.txt +++ b/cmake-build-debug/CMakeFiles/ocean_autogen.dir/ParseCache.txt @@ -1,11 +1,16 @@ # Generated by CMake. Changes will be overwritten. -/Users/sotech117/Documents/final/adv/ocean-simulation/src/arap.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shape.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean_alt.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean_alt.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/mainwindow.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shader.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/graphicsdebug.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/graphicsdebug.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/meshloader.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/mainwindow.h mmc:Q_OBJECT - mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.h + mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/mainwindow.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/moc_predefs.h mdp:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h mdp:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h @@ -1066,6 +1071,7 @@ mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/Eigen/src/plugins/ReshapedMethods.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/glew/include/GL/glew.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/arap.h + mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shader.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shape.h @@ -1381,22 +1387,26 @@ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qopenglwidget.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qtopenglwidgetsexports.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qtopenglwidgetsglobal.h + mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QMainWindow mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QWidget + mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qmainwindow.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qsizepolicy.h + mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtabwidget.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgets-config.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsexports.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsglobal.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qwidget.h -/Users/sotech117/Documents/final/adv/ocean-simulation/util/tiny_obj_loader.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/arap.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/meshloader.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shader.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shape.h /Users/sotech117/Documents/final/adv/ocean-simulation/src/main.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/mainwindow.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shape.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shader.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/meshloader.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/arap.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.h +/Users/sotech117/Documents/final/adv/ocean-simulation/util/tiny_obj_loader.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shape.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.h mmc:Q_OBJECT - mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/mainwindow.h + mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/cmake-build-debug/ocean_autogen/moc_predefs.h mdp:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/Availability.h mdp:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h @@ -2457,7 +2467,6 @@ mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/Eigen/src/plugins/ReshapedMethods.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/glew/include/GL/glew.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/arap.h - mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shader.h mdp:/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shape.h @@ -2773,21 +2782,12 @@ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qopenglwidget.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qtopenglwidgetsexports.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qtopenglwidgetsglobal.h - mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QMainWindow mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QWidget - mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qmainwindow.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qsizepolicy.h - mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtabwidget.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgets-config.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsexports.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsglobal.h mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qwidget.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/meshloader.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/graphicsdebug.h -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/graphicsdebug.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/glwidget.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/shader.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/mainwindow.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean_alt.cpp -/Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean_alt.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/graphics/camera.cpp +/Users/sotech117/Documents/final/adv/ocean-simulation/src/ocean/ocean.h +/Users/sotech117/Documents/final/adv/ocean-simulation/src/arap.h diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 41fa4a8..e8078db 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: May 09 15:02 EDT +Start testing: May 09 19:30 EDT ---------------------------------------------------------- -End testing: May 09 15:02 EDT +End testing: May 09 19:30 EDT diff --git a/cmake-build-debug/ocean b/cmake-build-debug/ocean index 552319e..4d11337 100755 Binary files a/cmake-build-debug/ocean and b/cmake-build-debug/ocean differ diff --git a/src/arap.cpp b/src/arap.cpp index 729de07..08f2e15 100644 --- a/src/arap.cpp +++ b/src/arap.cpp @@ -49,8 +49,20 @@ void ARAP::init coeffMin = all_vertices.colwise().minCoeff(); coeffMax = all_vertices.colwise().maxCoeff(); - minCorner = coeffMin; - maxCorner = coeffMax; +// minCorner = coeffMin; +// maxCorner = coeffMax; + + std::cout << "minCorner: " << minCorner << std::endl; + std::cout << "maxCorner: " << maxCorner << std::endl; + + minCorner = Vector3f(0.0f, 0.0f, 0.0f); + maxCorner = Vector3f(1.0f, 0.0f, 1.0f); + + std::cout << "minCorner: " << minCorner << std::endl; + std::cout << "maxCorner: " << maxCorner << std::endl; +// +// minCorner = Vector3f(-1.0f, -1.0f, -1.0f); +// maxCorner = Vector3f(1.0f, 1.0f, 1.0f); // m_shape.initGroundPlane("cornell_box_full_lighting.png") diff --git a/src/ocean/ocean_alt.cpp b/src/ocean/ocean_alt.cpp index 6355abd..6636e62 100644 --- a/src/ocean/ocean_alt.cpp +++ b/src/ocean/ocean_alt.cpp @@ -312,7 +312,7 @@ void ocean_alt::update_ocean() // NEW Eigen::Vector3f norm = Eigen::Vector3f(-m_slopes_x[i][0], 1.0, -m_slopes_z[i][0]); - norm = -norm.normalized(); // FIXME: why do I have to be inverted? + norm = norm.normalized(); // FIXME: why do I have to be inverted? //if (i==6) std::cout << amplitude[0] << std::endl; diff --git a/src/ocean/ocean_alt.h b/src/ocean/ocean_alt.h index fa42d75..bf37b11 100644 --- a/src/ocean/ocean_alt.h +++ b/src/ocean/ocean_alt.h @@ -58,7 +58,7 @@ private: const int num_cols = 256; const int num_tiles_x = 1; - const int num_tiles_z = 1; + const int num_tiles_z = 2; const double vertex_displacement = Lx / 2; -- cgit v1.2.3-70-g09d2